linux/fs/namespace.c
<<
>>
Prefs
   1/*
   2 *  linux/fs/namespace.c
   3 *
   4 * (C) Copyright Al Viro 2000, 2001
   5 *      Released under GPL v2.
   6 *
   7 * Based on code from fs/super.c, copyright Linus Torvalds and others.
   8 * Heavily rewritten.
   9 */
  10
  11#include <linux/syscalls.h>
  12#include <linux/export.h>
  13#include <linux/capability.h>
  14#include <linux/mnt_namespace.h>
  15#include <linux/namei.h>
  16#include <linux/security.h>
  17#include <linux/idr.h>
  18#include <linux/acct.h>         /* acct_auto_close_mnt */
  19#include <linux/ramfs.h>        /* init_rootfs */
  20#include <linux/fs_struct.h>    /* get_fs_root et.al. */
  21#include <linux/fsnotify.h>     /* fsnotify_vfsmount_delete */
  22#include <linux/uaccess.h>
  23#include "pnode.h"
  24#include "internal.h"
  25
  26#define HASH_SHIFT ilog2(PAGE_SIZE / sizeof(struct list_head))
  27#define HASH_SIZE (1UL << HASH_SHIFT)
  28
  29static int event;
  30static DEFINE_IDA(mnt_id_ida);
  31static DEFINE_IDA(mnt_group_ida);
  32static DEFINE_SPINLOCK(mnt_id_lock);
  33static int mnt_id_start = 0;
  34static int mnt_group_start = 1;
  35
  36static struct list_head *mount_hashtable __read_mostly;
  37static struct kmem_cache *mnt_cache __read_mostly;
  38static struct rw_semaphore namespace_sem;
  39
  40/* /sys/fs */
  41struct kobject *fs_kobj;
  42EXPORT_SYMBOL_GPL(fs_kobj);
  43
  44/*
  45 * vfsmount lock may be taken for read to prevent changes to the
  46 * vfsmount hash, ie. during mountpoint lookups or walking back
  47 * up the tree.
  48 *
  49 * It should be taken for write in all cases where the vfsmount
  50 * tree or hash is modified or when a vfsmount structure is modified.
  51 */
  52DEFINE_BRLOCK(vfsmount_lock);
  53
  54static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry)
  55{
  56        unsigned long tmp = ((unsigned long)mnt / L1_CACHE_BYTES);
  57        tmp += ((unsigned long)dentry / L1_CACHE_BYTES);
  58        tmp = tmp + (tmp >> HASH_SHIFT);
  59        return tmp & (HASH_SIZE - 1);
  60}
  61
  62#define MNT_WRITER_UNDERFLOW_LIMIT -(1<<16)
  63
  64/*
  65 * allocation is serialized by namespace_sem, but we need the spinlock to
  66 * serialize with freeing.
  67 */
  68static int mnt_alloc_id(struct mount *mnt)
  69{
  70        int res;
  71
  72retry:
  73        ida_pre_get(&mnt_id_ida, GFP_KERNEL);
  74        spin_lock(&mnt_id_lock);
  75        res = ida_get_new_above(&mnt_id_ida, mnt_id_start, &mnt->mnt_id);
  76        if (!res)
  77                mnt_id_start = mnt->mnt_id + 1;
  78        spin_unlock(&mnt_id_lock);
  79        if (res == -EAGAIN)
  80                goto retry;
  81
  82        return res;
  83}
  84
  85static void mnt_free_id(struct mount *mnt)
  86{
  87        int id = mnt->mnt_id;
  88        spin_lock(&mnt_id_lock);
  89        ida_remove(&mnt_id_ida, id);
  90        if (mnt_id_start > id)
  91                mnt_id_start = id;
  92        spin_unlock(&mnt_id_lock);
  93}
  94
  95/*
  96 * Allocate a new peer group ID
  97 *
  98 * mnt_group_ida is protected by namespace_sem
  99 */
 100static int mnt_alloc_group_id(struct mount *mnt)
 101{
 102        int res;
 103
 104        if (!ida_pre_get(&mnt_group_ida, GFP_KERNEL))
 105                return -ENOMEM;
 106
 107        res = ida_get_new_above(&mnt_group_ida,
 108                                mnt_group_start,
 109                                &mnt->mnt_group_id);
 110        if (!res)
 111                mnt_group_start = mnt->mnt_group_id + 1;
 112
 113        return res;
 114}
 115
 116/*
 117 * Release a peer group ID
 118 */
 119void mnt_release_group_id(struct mount *mnt)
 120{
 121        int id = mnt->mnt_group_id;
 122        ida_remove(&mnt_group_ida, id);
 123        if (mnt_group_start > id)
 124                mnt_group_start = id;
 125        mnt->mnt_group_id = 0;
 126}
 127
 128/*
 129 * vfsmount lock must be held for read
 130 */
 131static inline void mnt_add_count(struct mount *mnt, int n)
 132{
 133#ifdef CONFIG_SMP
 134        this_cpu_add(mnt->mnt_pcp->mnt_count, n);
 135#else
 136        preempt_disable();
 137        mnt->mnt_count += n;
 138        preempt_enable();
 139#endif
 140}
 141
 142/*
 143 * vfsmount lock must be held for write
 144 */
 145unsigned int mnt_get_count(struct mount *mnt)
 146{
 147#ifdef CONFIG_SMP
 148        unsigned int count = 0;
 149        int cpu;
 150
 151        for_each_possible_cpu(cpu) {
 152                count += per_cpu_ptr(mnt->mnt_pcp, cpu)->mnt_count;
 153        }
 154
 155        return count;
 156#else
 157        return mnt->mnt_count;
 158#endif
 159}
 160
 161static struct mount *alloc_vfsmnt(const char *name)
 162{
 163        struct mount *mnt = kmem_cache_zalloc(mnt_cache, GFP_KERNEL);
 164        if (mnt) {
 165                int err;
 166
 167                err = mnt_alloc_id(mnt);
 168                if (err)
 169                        goto out_free_cache;
 170
 171                if (name) {
 172                        mnt->mnt_devname = kstrdup(name, GFP_KERNEL);
 173                        if (!mnt->mnt_devname)
 174                                goto out_free_id;
 175                }
 176
 177#ifdef CONFIG_SMP
 178                mnt->mnt_pcp = alloc_percpu(struct mnt_pcp);
 179                if (!mnt->mnt_pcp)
 180                        goto out_free_devname;
 181
 182                this_cpu_add(mnt->mnt_pcp->mnt_count, 1);
 183#else
 184                mnt->mnt_count = 1;
 185                mnt->mnt_writers = 0;
 186#endif
 187
 188                INIT_LIST_HEAD(&mnt->mnt_hash);
 189                INIT_LIST_HEAD(&mnt->mnt_child);
 190                INIT_LIST_HEAD(&mnt->mnt_mounts);
 191                INIT_LIST_HEAD(&mnt->mnt_list);
 192                INIT_LIST_HEAD(&mnt->mnt_expire);
 193                INIT_LIST_HEAD(&mnt->mnt_share);
 194                INIT_LIST_HEAD(&mnt->mnt_slave_list);
 195                INIT_LIST_HEAD(&mnt->mnt_slave);
 196#ifdef CONFIG_FSNOTIFY
 197                INIT_HLIST_HEAD(&mnt->mnt_fsnotify_marks);
 198#endif
 199        }
 200        return mnt;
 201
 202#ifdef CONFIG_SMP
 203out_free_devname:
 204        kfree(mnt->mnt_devname);
 205#endif
 206out_free_id:
 207        mnt_free_id(mnt);
 208out_free_cache:
 209        kmem_cache_free(mnt_cache, mnt);
 210        return NULL;
 211}
 212
 213/*
 214 * Most r/o checks on a fs are for operations that take
 215 * discrete amounts of time, like a write() or unlink().
 216 * We must keep track of when those operations start
 217 * (for permission checks) and when they end, so that
 218 * we can determine when writes are able to occur to
 219 * a filesystem.
 220 */
 221/*
 222 * __mnt_is_readonly: check whether a mount is read-only
 223 * @mnt: the mount to check for its write status
 224 *
 225 * This shouldn't be used directly ouside of the VFS.
 226 * It does not guarantee that the filesystem will stay
 227 * r/w, just that it is right *now*.  This can not and
 228 * should not be used in place of IS_RDONLY(inode).
 229 * mnt_want/drop_write() will _keep_ the filesystem
 230 * r/w.
 231 */
 232int __mnt_is_readonly(struct vfsmount *mnt)
 233{
 234        if (mnt->mnt_flags & MNT_READONLY)
 235                return 1;
 236        if (mnt->mnt_sb->s_flags & MS_RDONLY)
 237                return 1;
 238        return 0;
 239}
 240EXPORT_SYMBOL_GPL(__mnt_is_readonly);
 241
 242static inline void mnt_inc_writers(struct mount *mnt)
 243{
 244#ifdef CONFIG_SMP
 245        this_cpu_inc(mnt->mnt_pcp->mnt_writers);
 246#else
 247        mnt->mnt_writers++;
 248#endif
 249}
 250
 251static inline void mnt_dec_writers(struct mount *mnt)
 252{
 253#ifdef CONFIG_SMP
 254        this_cpu_dec(mnt->mnt_pcp->mnt_writers);
 255#else
 256        mnt->mnt_writers--;
 257#endif
 258}
 259
 260static unsigned int mnt_get_writers(struct mount *mnt)
 261{
 262#ifdef CONFIG_SMP
 263        unsigned int count = 0;
 264        int cpu;
 265
 266        for_each_possible_cpu(cpu) {
 267                count += per_cpu_ptr(mnt->mnt_pcp, cpu)->mnt_writers;
 268        }
 269
 270        return count;
 271#else
 272        return mnt->mnt_writers;
 273#endif
 274}
 275
 276static int mnt_is_readonly(struct vfsmount *mnt)
 277{
 278        if (mnt->mnt_sb->s_readonly_remount)
 279                return 1;
 280        /* Order wrt setting s_flags/s_readonly_remount in do_remount() */
 281        smp_rmb();
 282        return __mnt_is_readonly(mnt);
 283}
 284
 285/*
 286 * Most r/o & frozen checks on a fs are for operations that take discrete
 287 * amounts of time, like a write() or unlink().  We must keep track of when
 288 * those operations start (for permission checks) and when they end, so that we
 289 * can determine when writes are able to occur to a filesystem.
 290 */
 291/**
 292 * __mnt_want_write - get write access to a mount without freeze protection
 293 * @m: the mount on which to take a write
 294 *
 295 * This tells the low-level filesystem that a write is about to be performed to
 296 * it, and makes sure that writes are allowed (mnt it read-write) before
 297 * returning success. This operation does not protect against filesystem being
 298 * frozen. When the write operation is finished, __mnt_drop_write() must be
 299 * called. This is effectively a refcount.
 300 */
 301int __mnt_want_write(struct vfsmount *m)
 302{
 303        struct mount *mnt = real_mount(m);
 304        int ret = 0;
 305
 306        preempt_disable();
 307        mnt_inc_writers(mnt);
 308        /*
 309         * The store to mnt_inc_writers must be visible before we pass
 310         * MNT_WRITE_HOLD loop below, so that the slowpath can see our
 311         * incremented count after it has set MNT_WRITE_HOLD.
 312         */
 313        smp_mb();
 314        while (mnt->mnt.mnt_flags & MNT_WRITE_HOLD)
 315                cpu_relax();
 316        /*
 317         * After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will
 318         * be set to match its requirements. So we must not load that until
 319         * MNT_WRITE_HOLD is cleared.
 320         */
 321        smp_rmb();
 322        if (mnt_is_readonly(m)) {
 323                mnt_dec_writers(mnt);
 324                ret = -EROFS;
 325        }
 326        preempt_enable();
 327
 328        return ret;
 329}
 330
 331/**
 332 * mnt_want_write - get write access to a mount
 333 * @m: the mount on which to take a write
 334 *
 335 * This tells the low-level filesystem that a write is about to be performed to
 336 * it, and makes sure that writes are allowed (mount is read-write, filesystem
 337 * is not frozen) before returning success.  When the write operation is
 338 * finished, mnt_drop_write() must be called.  This is effectively a refcount.
 339 */
 340int mnt_want_write(struct vfsmount *m)
 341{
 342        int ret;
 343
 344        sb_start_write(m->mnt_sb);
 345        ret = __mnt_want_write(m);
 346        if (ret)
 347                sb_end_write(m->mnt_sb);
 348        return ret;
 349}
 350EXPORT_SYMBOL_GPL(mnt_want_write);
 351
 352/**
 353 * mnt_clone_write - get write access to a mount
 354 * @mnt: the mount on which to take a write
 355 *
 356 * This is effectively like mnt_want_write, except
 357 * it must only be used to take an extra write reference
 358 * on a mountpoint that we already know has a write reference
 359 * on it. This allows some optimisation.
 360 *
 361 * After finished, mnt_drop_write must be called as usual to
 362 * drop the reference.
 363 */
 364int mnt_clone_write(struct vfsmount *mnt)
 365{
 366        /* superblock may be r/o */
 367        if (__mnt_is_readonly(mnt))
 368                return -EROFS;
 369        preempt_disable();
 370        mnt_inc_writers(real_mount(mnt));
 371        preempt_enable();
 372        return 0;
 373}
 374EXPORT_SYMBOL_GPL(mnt_clone_write);
 375
 376/**
 377 * __mnt_want_write_file - get write access to a file's mount
 378 * @file: the file who's mount on which to take a write
 379 *
 380 * This is like __mnt_want_write, but it takes a file and can
 381 * do some optimisations if the file is open for write already
 382 */
 383int __mnt_want_write_file(struct file *file)
 384{
 385        struct inode *inode = file->f_dentry->d_inode;
 386
 387        if (!(file->f_mode & FMODE_WRITE) || special_file(inode->i_mode))
 388                return __mnt_want_write(file->f_path.mnt);
 389        else
 390                return mnt_clone_write(file->f_path.mnt);
 391}
 392
 393/**
 394 * mnt_want_write_file - get write access to a file's mount
 395 * @file: the file who's mount on which to take a write
 396 *
 397 * This is like mnt_want_write, but it takes a file and can
 398 * do some optimisations if the file is open for write already
 399 */
 400int mnt_want_write_file(struct file *file)
 401{
 402        int ret;
 403
 404        sb_start_write(file->f_path.mnt->mnt_sb);
 405        ret = __mnt_want_write_file(file);
 406        if (ret)
 407                sb_end_write(file->f_path.mnt->mnt_sb);
 408        return ret;
 409}
 410EXPORT_SYMBOL_GPL(mnt_want_write_file);
 411
 412/**
 413 * __mnt_drop_write - give up write access to a mount
 414 * @mnt: the mount on which to give up write access
 415 *
 416 * Tells the low-level filesystem that we are done
 417 * performing writes to it.  Must be matched with
 418 * __mnt_want_write() call above.
 419 */
 420void __mnt_drop_write(struct vfsmount *mnt)
 421{
 422        preempt_disable();
 423        mnt_dec_writers(real_mount(mnt));
 424        preempt_enable();
 425}
 426
 427/**
 428 * mnt_drop_write - give up write access to a mount
 429 * @mnt: the mount on which to give up write access
 430 *
 431 * Tells the low-level filesystem that we are done performing writes to it and
 432 * also allows filesystem to be frozen again.  Must be matched with
 433 * mnt_want_write() call above.
 434 */
 435void mnt_drop_write(struct vfsmount *mnt)
 436{
 437        __mnt_drop_write(mnt);
 438        sb_end_write(mnt->mnt_sb);
 439}
 440EXPORT_SYMBOL_GPL(mnt_drop_write);
 441
 442void __mnt_drop_write_file(struct file *file)
 443{
 444        __mnt_drop_write(file->f_path.mnt);
 445}
 446
 447void mnt_drop_write_file(struct file *file)
 448{
 449        mnt_drop_write(file->f_path.mnt);
 450}
 451EXPORT_SYMBOL(mnt_drop_write_file);
 452
 453static int mnt_make_readonly(struct mount *mnt)
 454{
 455        int ret = 0;
 456
 457        br_write_lock(&vfsmount_lock);
 458        mnt->mnt.mnt_flags |= MNT_WRITE_HOLD;
 459        /*
 460         * After storing MNT_WRITE_HOLD, we'll read the counters. This store
 461         * should be visible before we do.
 462         */
 463        smp_mb();
 464
 465        /*
 466         * With writers on hold, if this value is zero, then there are
 467         * definitely no active writers (although held writers may subsequently
 468         * increment the count, they'll have to wait, and decrement it after
 469         * seeing MNT_READONLY).
 470         *
 471         * It is OK to have counter incremented on one CPU and decremented on
 472         * another: the sum will add up correctly. The danger would be when we
 473         * sum up each counter, if we read a counter before it is incremented,
 474         * but then read another CPU's count which it has been subsequently
 475         * decremented from -- we would see more decrements than we should.
 476         * MNT_WRITE_HOLD protects against this scenario, because
 477         * mnt_want_write first increments count, then smp_mb, then spins on
 478         * MNT_WRITE_HOLD, so it can't be decremented by another CPU while
 479         * we're counting up here.
 480         */
 481        if (mnt_get_writers(mnt) > 0)
 482                ret = -EBUSY;
 483        else
 484                mnt->mnt.mnt_flags |= MNT_READONLY;
 485        /*
 486         * MNT_READONLY must become visible before ~MNT_WRITE_HOLD, so writers
fil487"> 4272"> 272        return 
 * th    */
        smp_mb();
        mnt->mnt.mnt_flags |= <;MNT_WRITE_HOLD;
        br_write_lockun" cl(&vfsmount_lock);
        return ret;
}

mnt_t_dropun_readonly" cl(struct mount *mnt)
{
        br_write_lock(&vfsmount_lock);
        mnt->mnt.mnt_flags |= <;MNT_READONLY;
        br_write_lockun" cl(&vfsmount_lock);
}

    mnt_sb_preparadont_lockonly" cl(struct vfsmrbloc_b" cl *mnt_a>);
{
        mount *mnt)
        int mnt
        /*
        retumntmnt_a>);
<;mounsdont_ve_c" cl);
        EBUSY;

        br_write_lock(&vfsmount_lock);
        f_delisagsor_ cou_y" cl(mnt) &g, ;mnt_a>);
<;mnt_sdt_locl) &g, ref="+code=mnt_flag thianclass="sref">mnt_drop thiancl) > href="fs/namespace.c#L444"5id="L413"5class="line" name="L413"5 413<5a>        mnt->mnt.mnt_flags |= <;MNT_READONLY;
                mnt->mnt.mnt_flags |= MNT_WRITE_HOLD;
                smp_mb();
        mnt_get_writers(mnt) > 0)
                mntEBUSY;
                                bonly(&amr"5class="line" name="L399"5 409<50>  272=inod1s/namespace.c#L374" id="L374" class="line" name="L374"> 37491USY" class="sref">EBUUUUUUUUUs="line" name="L401"5 401<50>void         <="fs/namespace.c#L422" i5="L425ref">smp_rmb        m!EBUSYMNT">MNT_READONLY;
mnt_a>);
<;mounsdont_ve_c" cl);
        5a href="+code=mnt_dec_wr5ters"5riters" class="sref">mnt_dec_writersEBUSY;
        5a href="+code=preempt_en5ble" 52class="line" name="L395"4 395<45>}
m!EBUSY
mounsdont_ve_c" cl);
class=unrbloc_s/namespace.c#L442"class=unrbloc_SY;1s="line" name="L418"5 418<51>         ss="comment">/**
5a hre52te" class="sref">sb_end_write( * mnt_drop5write5="sref">retid="L374"ss="comment"> * @mnt: th5 moun52lass="sref">br_write_lockun"_ cou_y" cl(mnt) &g, ;mnt_a>);
<;mnt_sdt_locl) &g, ref="+code=mnt_flag thianclass="sref">mnt_drop thiancl) > href="fs/namespace.c#L444"5id="L413"5class="line" name="L417"5 417<51> *
<5 href53_clone_write" class="f">mnt_get_writers class="sref">mnt.mnt_flags |= <;MNT_READONLY;
 * Tells th5 low-531SY" class="sref">EBUUUUUUUUUnt_get_writers class="sref">mnt.mnt_flags |= <;MNT>MNT_WRITE_HOLD;
 * also all5ws fi532sref">ret * mnt_want5write53f">smp_mb();
vfsmount_lock);
 */
5a hre53class="line" name="L395"4 395<45>void ;
EBUSY
         a href="+code=__mnt_drop5write5 class="line" name="L401"5 401<50>mnt_t_dropfree_58"5ags" class="sref"free_58"5ag>mount *mnt)
}
->mnt_a>)b);

br_write_lock(Y" clree_iref="+code=vfsmcY" clree_ir > 0)
(CONFIG_SMPnamespace.c#L32CONFIG_SMPlass="line" name="L401"5 401<50>{
smp_mb();
mnt_a>)b);
void mne_freec#L454" id="L39kmem_c>mne_free &g, ;mne">mnt_drop thiancl) >namespace.c#L323"5id="Ls="line" name="L400"5 400<50>
void {
 486        5a href="+code=mnt_drop_w5ite" 54on which to give up write accefindhref="fon"fs/58"5id="ess 478}
static i5t  *mnt)
mnt)
 *d_in href="fs/namespa"+code=d_inode" classsref">d_in,="line" name="L408"5 408<5a>mnt->        5nt  366
 *mnt_a>);
ref="fs/namespa"+code=d_inode" classsref">d_inLs="line" name="L400"5 400<50>        5a href="+code=br_write_l5ck" c5ass="sref">br_t *{
mnt-> *mnt)
);
a href="fs/namesp        5span class="comment">/*<5span>5         * 5fter 56mnt-><.c#L(;;ass="line" name="L417"5 417<51>         * 5hould561SY" class="sref">EBUref="fs/namespatmpef="+code=vfsmctmpd_in MNT_WRITE_HOLD);
mnnex clas :Uref="fs/namespatmpef="+code=vfsmctmpd_inb);
         */5/span56="sref">ret = -) MNT_WRITE_HOLD        5a href="+code=smp_mb" cl5ss="s56 class="sref">mnt->ref="fs/namespatmpef="+code=vfsmctmpd_in MMNT_WRITE_HOLD
mnt-><50>  272=inod1s/namespace.c#L374">        5span class="comment">/*<5span>56t"mb" class="sref">sm href="+code=EBpef="+code=vfsmcp_a>) MNT_WRITE_HOLDmnt)
         * 5ith w56e=mnt_get_writers" cl->">vfsmount_lock)pef="+code=vfsmcp_a>)b);
mnteparevf/a>.mnt_fl MMNT_WRITE_HOLDmnt_fl ">MNT">MNT_READONLY;
)b);
mntetpoivft_fl MMNT_WRITE_HOLDd_inLss="line" name="L417"5 417<51>        5ss="comment">         * 5efini56+code=mnt"errass="sref">mnt{
         * 5ncrem56(&amr"5class="line" name="L3950>  272=inod1s/namespace.c#L374">        5ss="comment">         * 5eeing56USY" class="sref">EBUs="line" name="L401"5 401<50>         *<5span>57mnt->         * 5t is 571SY" class="s>;
         * 5nothe5: the s="line" name="L401"5 401<50>        5ss="comment">         * 5um up57class="line" name="L404"> 404         * 5ut th5n read another CPU's cou86" class="line" name="L486"> 486         * 5ecrem5nted from -- we would see mor* 40okup_gt; - R;
 486         * 5NT_WR5TE_HOLD protects against this6" class="line" name="L486"> 486        5ss="comment">         * 5nt_wa5t_write first increments coun* "Ffon<" means="fon tehref" class="line" name="L486"> 486{
         * 5NT_WR5TE_HOLD, so it can't be d*<.cmatcing4="sref:" class="line" name="L486"> 486        5ss="comment">         * 5eƋre counting up here.
<6" class="line" name="L486"> 486         */5/span5
 429        5f ( 429 429        5lse
 429"is/ref=roo 429/*<5span>58ted from -- we would see mor* >;
"e.c#58"5id="eofe/dev/sda1#L478"" class="line" name="L429"> 429         * 5NT_RE5DONLY must become visible bef*e/dev/sda2#L478" /dev/sda3#L478" NULd8" class="line" name="L388"4 388<45 272 5      return  429{
 * th    */5/span5
 420        5a href="+code=mnt_incass5"sref5>mnt *mnt)
mn/a>);
mn/a>);
        5a href="+code=preerite_l5ckun"59 class="line" name="L422"> 422        5eturn ret *mnt)
}
 404
__mnt_drop_writbr42"clhref="+code=vfsmount_lo2"clhref=>moun">vfsmount_lock);
__mnt_want_w40okup_gt;namespace.c#L32_L40okup_gt;>mounref="fs/namespapt" class="sref">mn/a>);
mnt_flt_drop thiancl) &pt" class="sref">mn/a>);
d_in, 1ss="line" name="L400"5 400<50>ret)
        5a href="+code=br_write_l5ck" c59te" class="sref">sb_end_write({
moun">vfsmount_lock);
        5a href="+code=mnt_rite_l5ckun"59USY" class="sref">EBUSY;">vfsmount_lock)child_gt;namespace.c#L32child_gt;d_inmnt_fls="line" name="L400"5 400<56>}

EBUref="fs/namespabr42"clhmoun">vfsmount_lock);
    ret = -;
{
        6a hct 5       6a  m="line" name="L401"5 401<56>6       6a"fs/namespace.c#L437" i6"L40765classly" claref="fs/namespainace.c#mnt_drop_writinace.classf0;
mnt)
        6a hr class="comment">/*<6sp Ra6yimisas="line" name="L417"5 417<56>8       6a href="+code=mnt" class6mick<6="sref">ret;
mnt_a>)b);
currevfd_inb);
)b);
9       6a href="+code=mnt_rite_l6code=6" class="line" name="L410"> 410
        6a href="+code=preerite_l6ck" c61vel filesystem that we are 86" class="line" name="L486"> 486        6a href="+code=preelisags6r_ co6="fs/namespace.c#L413" id="Ldon58"5id=" 400"/namespac/name.c#Lle-class="line" name="L486"> 486{
 420        6       mnt_t_droptouch=moun"L420"> 4ef="+code=vfsmctouch=moun"L420"> 4>mount * 4ef="+code=vfsmcmoun"L420"> 4>mou href="fs/namespancode=MNT_READONLnst_fls="line" name="L396"4 396<46>        6        366        6spa    ret)
        6       );
evevfd_in="s++);
evevfd_ins="line" name="L400"5 400<568    6                        6  bon6y(&amr"5class="line" n);
vfsmount_lock)ncode=MNT_READONLnst_flb);
mn/oac" lass="line" name="L400"5 400<56 id="L3746 class="line" name="L3746> 37461USY" class="ss="line" name="L410"> 410void         6="fs/namespace.c#L422" i6="L4262class="line" name="L402"5 402<56>        6a href="+code=preempt_di6able"62"fs/namespace.c#L413" id="L86" class="line" name="L486"> 486        6a href="+code=mnt_dec_wr6ters"62 call above.
-class="line" name="L486"> 486        6a href="+code=preempt_en6ble" 62"fs/namespace.c#L435" id="L435" class="line" name="L435"> 435}
mnt_t_dropuntouch=moun"L420"> 4ef="+code=vfsmcuntouch=moun"L420"> 4>mount * 4ef="+code=vfsmcmoun"L420"> 4>mou href="fs/namespancode=MNT_READONLnst_fls="line" name="L396"4 396<46>
        6ss="comment">/**
6a hre62te" class="srMNT">MNT_READONLY;
);
evevfd_in=!MNT_WRITE_HOLDevevfd_insss="line" name="L417"5 417<56> * mnt_drop6write62(&amr"5class="line" n);
evevfd_in="s);
evevfd_ins="line" name="L400"5 400<56>id="L3746ss="comment"> * @mnt: th6 moun62USY" class="sref">EBU);
vfsmount_lock)ncode=MNT_READONLnst_flb);
mn/oac" lass="line" name="L400"5 400<56> *
<6 href63mnt-> * Tells th6 low-631SY" s="line" name="L401"5 401<56>        6ss="comment"> * also all6ws fi63class="line" name="L453"> 453 * mnt_want6write6) call above.
 486 */
6a hre6="fs/namespace.c#L435" id="L43 Clear/sref">pan>
;maining4="sref8" class="line" name="L388"4 388<46>void 
 435        6a href="+code=__mnt_drop6write6 classly" class="sref">mnt_t_dropsref">_reseteteref="+code=vfsmcsref">_reseteter>mount *d_in href="fs/namespa"+code=d_inode" classsref">d_ins="line" name="L396"4 396<46> 449}
mnt_t_dropus" class="sref"ud_ins="line" name="L400"5 400<56>
br_.c#L(ref">mnt_t_dropus" class="sref"ud_inclasssref">mnt_t_dropus" class="sref"ud_in <ssref">mnt_t_dropHASH_SIZEs" class="sref"HASH_SIZEd_inssref">mnt_t_dropus" class="sref"ud_in++sss="line" name="L417"5 417<56>ret = - *mnt)
)s="line" name="L400"5 400<56> 404ref">EBU);
mnt) &g, ;);
">vfsmount_lock)5id="Lhashtef="fs/namespace.c#5id="Lhashtef="d_in[ref">mnt_t_dropus" class="sref"ud_in]t_drop thiancl) > hashef="+code=vfsmcgt; hashd_inLss="line" name="L417"5 417<56>void smlass="sr)b);
mntetpoivft_fl MMNT_WRITE_HOLDd_inL="line" name="L417"5 417<56>
        6ref="+code=mnt_drop_writ6_file64+code=mnt"errass="sres="line" name="L401"5 401<56>{
ret        6a href="+code=mnt_drop_w6ite" 6lass="sref">mnt_drop_writemoun">vfsmount_lock)"+code=d_inode" classsref">d_in}
d_inMNT>MNT_WRITE_HOLD)s="line" name="L400"5 400<56>br_write_lock(id="fmoun">vfsmount_lock)"+code=d_inode" classsref">d_instatic i6t  404 486        6nt -class="line" name="L486"> 486
 435        6a href="+code=br_write_l6ck" c65classly" class="sref">mnt_t_dropsrtach=mou=d_inode" classsrtach=mou>mount *mnt)
 *mn/a>);
mnold_nt" d_inL="line" name="L417"5 417<56>{
 449        6span class="comment">/*<6span>65ass="sref">mnt_drop_writemnold_nt" d_ind_in MNT_WRITE_HOLDmnt_a>)b);
mntetpoivft_fls="line" name="L400"5 400<56>         * 6fter 66mnt->mnold_nt" d_inmnt_fl M
">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
mnteparevf/a>.mnt_fls="line" name="L400"5 400<56>         * 6hould66ss="sref">br_write_lock(Y" smclass="sref">mnt_a>)b);
mnteparevf/a>. MNT_WRITE_HOLDmnt_a>)s="line" name="L400"5 400<56>         */6/span66y" class="sref">f_delisagsor5vfsmclass="sref">mnt_a>)b);
mntetpoivft_fl MNT_WRITE_HOLDmnt_a>)b);
mnt_a>)ags |= <;mnteroo<_a>)s="line" name="L400"5 400<56>static i6a href="+code=smp_mb" cl6ss="s66f">smp_mb();
vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
mntechild5class="line" name="L400"5 400<56>
vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
        6span class="comment">/*<6span>66ret = _reseteteref="+code=vfsmcsref">_reseteter>mount_drop_writemnold_nt" d_ind_inLs="line" name="L400"5 400<56>
         * 6ith w66 class="line" name="L401"5 401<56>        6ss="comment">         * 6efini66class="line" name="L401"5 401<56>{
         * 6ncrem66 486        6ss="comment">         * 6eeing66on which to give up write acce58"5id=" 400"/namespac/name.c#Lle-class="line" name="L486"> 486         *<6span>67 435         * 6t is 671SY" ss="sref">mnt_t_dropgt; setetpoivfsmclass="sref">mntesetetpoivf>mount *mnt)
 *d_in href="fs/namespa"+code=d_inode" classsref">d_in,="line" name="L408"5 408<56>         * 6nothe67="sref">ret = - *mnt)
        6ss="comment">         * 6um up675class="line" name="L404"5 404<56>         * 6ut th67t" class="sre();


 435        6ss="comment">         * 6ecrem67ret = poivfsmclass="sref">mntetpoivft_fl MNT_WRITE_HOLDd_inLs="line" name="L400"5 400<56>         * 6NT_WR676et = mnteparevf/a>. MNT_WRITE_HOLDmnt_a>)s="line" name="L400"5 400<56>        6ss="comment">         * 6nt_wa67ss="sref">br_write_lock(id="f="fs/namespace.c#L4id="f="fs>moun">vfsmount_lock)"+code=d_inode" classsref">d_in{
         * 6NT_WR67mnt->d_inMNT_WRITE_HOLD)s="line" name="L400"5 400<56>        6ss="comment">         * 6eཿass="sref">mnt_drop_writemoun">vfsmount_lock)"+code=d_inode" classsref">d_in         */6/span685class="line" name="L401"5 401<56>        6f ( 486        6lse
-class="line" name="L486"> 486 435/*<6span>68eadonly" class="sref">mnt_t_dropattach=mou=d_inode" classattach=mou>mount *mnt)
 *mn/a>);
mn/a>);
         * 6NT_RE684class="line" name="L397"4 397<46 272 6      return br_write_lock(gt; setetpoivfsmclass="sref">mntesetetpoivf>mounwrite_lock(real_mnt" class="sref">mnreal_mnt"  &g, ;mn/a>);
mnt_fl)t_drop thiancl) &pt" class="sref">mn/a>);
d_in, ef="+code=mnt_flags" class="sref">mnt_fl)s="line" name="L400"5 400<56>{
 * th    */6/span68mnt->mnass="addrtail>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
        6a href="+code=mnt_mb, wc6ass="68USY" class="sref">EBUUUUUUUUUef="+code=mnt_fhashef="+code=vfsmchash &g, ;mn/a>);
mnt_flt_drop thiancl) &pt" class="sref">mn/a>);
d_in))s="line" name="L400"5 400<56>        6a href="+code=mnt_incass6"sref69mnt->mnass="addrtail>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
mntechild5cla;
">vfsmount_lock)real_mnt" class="sref">mnreal_mnt"  &g, ;mn/a>);
mnt_fl)b);
mn)s="line" name="L400"5 400<56>        6a href="+code=preerite_l6ckun"691SY" s="line" name="L401"5 401<56>        6eturn  453}
 486
-class="line" name="L486"> 486 435mnt_t_dropld sit_treec#L454" id="L39ld sit_tree>mount *mnt)
        6a href="+code=br_write_l6ck" c69imisas="line" name="L417"5 417<56>{
 *mnt)
parevf/a>. MNT_WRITE_HOLDmnt_a>)b);
mnteparevf/a>.s="line" name="L400"5 400<56>        6a href="+code=mnt_rite_l6ckun"69USY" class="st *mnt)
mnt/a>.s="line" name="L400"5 400<57>}
1
 4ef="+code=vfsmcmoun"L420"> 4>mou href="fs/namespanef="+code=vfsmcn/a>. MNT_WRITE_HOLDparevf/a>.b);
     453{
smp_mb();
parevf/a>. MMNT_WRITE_HOLDmnt_a>)ss="line" name="L400"5 400<57>4
5
 = mnass="addrtail>moun">vfsmount_lock)h href="+code=vfsmch hrd_in;
">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
)ss="line" name="L400"5 400<57>6
 = mnt) &g, ;mnt/a>.;
">vfsmount_lock)h href="+code=vfsmch hrd_in;
);
)s="line" name="L400"5 400<57>7
sb_end_write(mnt/a>.b);
.s="line" name="L400"5 400<57>8
9
br_write_lockun"_ couspli 4ef="+code=vfsmc_ couspli 4>moun">vfsmount_lock)h href="+code=vfsmch hrd_in;
);
.b);

        7a href="+code=preerite_l7ck" c71ss="sref">br_write_lock(ass="addrtailclass="sref">mnass="addrtail>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
        7a href="+code=preelisags7r_ co71="sref">ret = -vfsmount_lock)parevfsmclass="sref">parevf/a>.b);
mnt_flt_drop thiancl) &5vfsmclass="sref">mnt_a>)b);
mntetpoivft_fl))s="line" name="L400"5 400<57>{
smp_mb();
mnass="addrtail>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
mntechild5cla;
">vfsmount_lock)parevfsmclass="sref">parevf/a>.b);
mn)s="line" name="L400"5 400<57>        7        4ef="+code=vfsmctouch=moun"L420"> 4>moun);
.)s="line" name="L400"5 400<57>5
        7spa    r="line" name="L401"5 401<57>7
 *mnt)
mount *mnt)
);
t *mnt)
roo<_a>)s="line" name="L400"5 400<578    7                        7  bon71 class="line" name="L449"> 449 37471USY" class="st *mnnex clas MNT_WRITE_HOLD)b);
mnags |= <;mnnex class="line" name="L400"5 400<57>void -><mnnex clas MM
">vfsmount_lock)pef="+code=vfsmcp_a>)b);
mnLss="line" name="L417"5 417<57>        7="fs/namespace.c#L422" i7="L42721SY" class="sref">EBUwhile (1Lss="line" name="L417"5 417<57>        7a href="+code=preempt_di7able"72="sref">ret = -) MMNT_WRITE_HOLDroo<_a>)s="line" name="L400"5 400<57>        7a href="+code=mnt_dec_wr7ters"72 class="sref">mnt>>>>>>>>>>>>>>>>>;
        7a href="+code=preempt_en7ble" 72class="sref">ref">EBUass="sre();
mnnex clas MNT_WRITE_HOLD)b);
mntechild5claags |= <;mnnex class="line" name="L400"5 400<57>5
smlass="srmnnex clas !M
">vfsmount_lock)pef="+code=vfsmcp_a>)b);
mnteparevf/a>.mnL="line" name="L400"5 400<57>        7"fs/namespace.c#L427" id7"L42772e=mnt_get_writers" class="sreeeeeeeee50>  272=inod1s/namespace.c#L3747>        7ss="comment">/**
7a hre72+code=mnt"errass="sref">mnt) MNT_WRITE_HOLD)b);
mnteparevf/a>.272=inod1s/namespace.c#L3747>    7ss="comment"> * mnt_drop7write72(&amr"5class="line" ns="line" name="L401"5 401<57>id="L3747ss="comment"> * @mnt: th7 moun72USY" class="ss="line" name="L410"> 410 *
<7 href73mnt-><>;
mnnex clas,nt *mnt)
mntechild5class="line" name="L400"5 400<57> * Tells th7 low-731SY" s="line" name="L401"5 401<57>        7ss="comment"> * also all7ws fi73class="line" name="L453"> 453 * mnt_want7write733lassly" clat *mnt)
mnt)
)L="line" name="L400"5 400<57> */
7a hre7="fs/ns="line" name="L417"5 417<57>void code=MNT_READONLY" c="sref">mnags |= <;
vfsmount_lock)pef="+code=vfsmcp_a>)b);
mnLss="line" name="L417"5 417<57>        7a href="+code=__mnt_drop7write73te" class="sref">sb_end_write() MNT_WRITE_HOLDmnt)
mntechild5class="line" name="L400"5 400<57>    7a href="+code=sb_end_wri7e" cl73(&amr"5class="line" n);
code=MNT_READONLY" c="sref">mnags |= <;id="L3747="fs/namespace.c#L440" i7="L4473USY" class="ss="line" name="L410"> 410-><>;
)s="line" name="L400"5 400<57>
 453mnt)
 453mn+co_kern_mnt" >mount *mnnt_d"sre, ss="shref="fs/namespa"ataclass="sref">mn"ata_a>)L="line" name="L400"5 400<57>void  366
 *mnt)
        7ref="+code=mnt_drop_writ7_file74+code=mnt"errt *d_in href="fs/namesparooroo<_a>)s="line" name="L400"5 400<57>    7="fs/namespace.c#L449" i7="L4474"sref="line" name="L400"5 400<57>        7a href="+code=mnt_drop_w7ite" 7lass="sref">mn}
f_delisagsor5vfsmclass="sref">mnt_a>) MNT_WRITE_HOLDmntou=d_inode" classalloc_>mntou &g, ;mnnt_d"sress="line" name="L400"5 400<57>mnref">EBU>;
void m="line" name="L401"5 401<57>
ret)
MNT_READONLY;
        7a href="+code=br_write_l7ck" c75te" class="sref">sb_end_write(mnt_a>)b);
mnt_a>)ags |= <;) MNT_WRITE_HOLD)s="line" name="L400"5 400<57>{
        7span class="comment">/*<7span>75ass="sref">mnt_drop_writeroo<_a>) MNT_WRITE_HOLDmnnt_d"sre, ref="fs/namespa"ataclass="sref">mn"ata_a>)Ls="line" name="L400"5 400<57>         * 7fter 76mnt-><mnIS_ERR &g, ;roo<_a>)sLss="line" name="L417"5 417<57>         * 7hould761SY" class="sref">EBUref="fs/namespafree_>mntou=d_inode" classfree_>mntou &g, ;mnt_a>)ss="line" name="L400"5 400<57>         */7/span76="sref">ret = -;
roo<_a>)ss="line" name="L400"5 400<57>smp_mbs="line" name="L401"5 401<57>
        7span class="comment">/*<7span>76ret = mnt_a>)b);
mnt_a>)ags |= <;mnteroo<_a>) MNT_WRITE_HOLDroo<_a>)s="line" name="L400"5 400<57>
         * 7ith w766et = mnt_a>)b);
mnt_a>)ags |= <;mntesb_a>) MNT_WRITE_HOLDroo<_a>)desb_a>)s="line" name="L400"5 400<57>        7ss="comment">         * 7efini76ss="sref">br_write_lock(gt;smclass="sref">mnt_a>)b);
mntetpoivft_fl MNT_WRITE_HOLDmnt_a>)b);
mnt_a>)ags |= <;mnteroo<_a>)s="line" name="L400"5 400<57>{
         * 7ncrem76mnt->mnt_a>)b);
mnteparevf/a>. MNT_WRITE_HOLDmnt_a>)s="line" name="L400"5 400<57>        7ss="comment">         * 7eeing76ass="sref">mnt_drop_writevfsmount_lock);
         *<7span>77mnt->mnass="addrtail>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
vfsmount_lock)rooroo<_a>)desb_a>)mn)s="line" name="L400"5 400<57>         * 7t is 77ss="sref">br_write_lock(_lolevfsmount_lock);
         * 7nothe77="sref">ret;">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
mnt_a>)s="line" name="L400"5 400<57>         * 7um up775class="line" name="L401"5 401<57>         * 7ut th77classmn+co_kern_mnt" >mouss="line" name="L400"5 400<57>        7ss="comment">         * 7ecrem77ef">m="line" name="L401"5 401<57>         * 7NT_WR77classly" clala/a> *mnt)
mnt)
old5cla;
t *d_in href="fs/namesparooroo<_a>),="line" name="L408"5 408<57>        7ss="comment">         * 7nt_wa77+code=mnt"errass="sref">mnt{
         * 7NT_WR77 class="line" name="L449"> 449        7ss="comment">         * 7eྉUSY" class="st *sb_a>) MNT_WRITE_HOLDold5clab);
mnt_a>)ags |= <;mntesb_a>)s="line" name="L400"5 400<57>         */7/span780SY" class="st *mnt)
        7f (br_f0;
 453        7lse
smp_mb();
mnt_a>) MNT_WRITE_HOLDmntou=d_inode" classalloc_>mntou &g, ;old5clab);
mnnam_devnt_d>mouss="line" name="L400"5 400<57>/*<7span>78t"mb" class="sref">sm>;
         * 7NT_RE78ef">r="line" name="L401"5 401<57 272 7      return MNT_href="fs/namespaCL_SLAVEode=MNT_READONLCL_SLAVEclas |href="fs/namespaCL_PRIVATEode=MNT_READONLCL_PRIVATE_a>)sL="line" name="L401"5 401<57 {
 * th    */7/span78(&amr"5class="line" n);
mnt_a>)b);
mntegroup_id_a>) MNsssrabove.
 435        7a href="+code=mnt_mb, wc7ass="78USY" class="selse="line" name="L435"> 435        7a href="+code=mnt_incass7"sref79mnt->-><);
mnt_a>)b);
mntegroup_id_a>) MN;old5clab);
mntegroup_id_a>)s="line" name="L400"5 400<57>        7a href="+code=preerite_l7ckun"79class="line" name="L402"5 402<57>        7eturn MNT_ref="fs/namespaCL_MAKE_SHAREs/namespace.c#L4CL_MAKE_SHAREs_a>)s ">MNT">MNT_!ref="fs/namespace.c#L454" id="L396"4clasb);
mntegroup_id_a>)Lss="line" name="L417"5 417<57>}
mntmntealloc_group_id &g, ;mnt_a>)ss="line" name="L400"5 400<57>
ref">EBUsmlass="srgotoN;        7a href="+code=br_write_l7ck" c79class="line" name="L401"5 401<57>{
->mnt_a>)b);
mnt_a>)ags |= <;) MNT_WRITE_HOLDold5clab);
mnt_a>)ags |= <;) ">MNT_NT_WRITE_HOLD)s="line" name="L400"5 400<57>        7a href="+code=mnt_rite_l7ckun"79ass="sref">mnt_drop_writevfsmount_lock)sbsmclass="sref">sb_a>)}
mnt_a>)b);
mnt_a>)ags |= <;mntesb_a>) MNT_WRITE_HOLDsb_a>)s="line" name="L400"5 400<58>1
br_write_lock(Y" smclass="sref">mnt_a>)b);
mnt_a>)ags |= <;mnteroo<_a>) MNT_WRITE_HOLDroo<_a>)ss="line" name="L400"5 400<58>    f_delisagsor5vfsmclass="sref">mnt_a>)b);
mntetpoivft_fl MNT_WRITE_HOLDmnt_a>)b);
mnt_a>)ags |= <;mnteroo<_a>)s="line" name="L400"5 400<58>3   smp_mb();
mnt_a>)b);
mnteparevf/a>. MNT_WRITE_HOLDmnt_a>)s="line" name="L400"5 400<58>4
vfsmount_lock);
5
 = mnass="addrtail>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
vfsmount_lock)sbsmclass="sref">sb_a>)mn)s="line" name="L400"5 400<58>6
 = vfsmount_lock);
7
8
-><MNT_ref="fs/namespaCL_SLAVEode=MNT_READONLCL_SLAVEclasLss="line" name="L417"5 417<58>9
EBUhref="+code=__mass="addclass="sref">mnass="add>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
vfsmount_lock)oldsmclass="sref">old5clab);

->-><);
mnt_a>)b);
old5clas="line" name="L400"5 400<58>1
EBUref="fs/namespaCLEAR_MNT_SHAREs/namespace.c#L4CLEAR_MNT_SHAREs &g, ;mnt_a>)ss="line" name="L400"5 400<58>        8a href="+code=preelisags8r_ co81="sref">retMNT_ref="fs/namespaCL_PRIVATEode=MNT_READONLCL_PRIVATE_a>)sLss="line" name="L417"5 417<58>{
mntMNT_ref="fs/namespaCL_MAKE_SHAREs/namespace.c#L4CL_MAKE_SHAREs_a>)s ||href="fs/namespaIS_MNT_SHAREs/namespace.c#L4IS_MNT_SHAREs &g, ;old5clasL="line" name="L401"5 401<58>        8       EBUhref="+code=__mass="addclass="sref">mnass="add>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
vfsmount_lock)oldsmclass="sref">old5clab);
5
smold5clasL="line" name="L401"5 401<58>6
mnass="add>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
vfsmount_lock)oldsmclass="sref">old5clab);
7
sb_end_write(mnt_a>)b);
old5clab);
8
->mnMNT_ref="fs/namespaCL_MAKE_SHAREs/namespace.c#L4CL_MAKE_SHAREs_a>)s="line" name="L401"5 401<58>void ->-><);
setet" cshared &g, ;mnt_a>)ss="line" name="L400"5 400<58>        8="fs/namespace.c#L422" i8="L4282class="line" name="L402"5 402<58>        8a href="+code=preempt_di8able"82="sref">ret
 435        8a href="+code=mnt_dec_wr8ters"82 call above.

< was on oner*5" class="line" name="L435"> 435        8a href="+code=preempt_en8ble" 82class="sref">MNT_ref="fs/namespaCL_EXPIREode=MNT_READONLCL_EXPIREclasLss="line" name="L417"5 417<58>5
smvfsmount_lock)oldsmclass="sref">old5clab);
        8"fs/namespace.c#L427" id8"L42782e=mnt_get_writers" class="srehref="+code=__mass="addclass="sref">mnass="add>moun">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
vfsmount_lock)oldsmclass="sref">old5clab);
7
/**
8a hre82+code=mnt"errs="line" name="L401"5 401<58>    8ss="comment"> * mnt_drop8write82"sref="line" name="L400"5 400<58>id="L3748ss="comment"> * @mnt: th8 moun82USY" class="s>;
mnt_a>)s="line" name="L400"5 400<58> *
<8 href83class="line" name="L411"5 411<58> * Tells th8 low-831SY" N;        8ss="comment"> * also all8ws fi83y" class="sref">f_delisagsorfree_>mntou=d_inode" classfree_>mntou &g, ;mnt_a>)ss="line" name="L400"5 400<58> * mnt_want8write833SY" class="s>;
        8ss="comment"> */
8a hre8="fs/ns="line" name="L401"5 401<58>void m="line" name="L401"5 401<58>
mnt_t_dropgt;freec#L454" id="L39gt;free>mount *mnt)
        8a href="+code=__mnt_drop8write83imisas="line" name="L417"5 417<58>    8a href="+code=sb_end_wri8e" cl83(&amr"5class=la/a> *mnt)
vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
mnt_a>)s="line" name="L400"5 400<58>id="L3748="fs/namespace.c#L440" i8="L4483USY" class="st *sb_a>) MNT_WRITE_HOLDmnt/a>.b);
mntesb_a>)s="line" name="L400"5 400<58>
br_wabove.
 435 435 435        8a href="+code=__mnt_drop8write8 class
 435void  435
 435        8ref="+code=mnt_drop_writ8_file84+code=mnt"errwabove.
 435    8="fs/namespace.c#L449" i8="L4484"srefamespace.c#L383" id="L=========* The 400"ing used to dealrwith mntecid=" decre id= provides barriers," class="line" name="L435"> 435id="L3748a href="+code=mnt_drop_w8ite" 8lass="amespace.c#L383" id="L=========* so mnteget_le 435}
 435br_write_lock(WARN_ONode=MNT_READONLWARN_ON &g, ;mnteget_lemnt_a>)sLs="line" name="L400"5 400<58>f_delisagsorfsnotify_58"5id="Ldeletec#L454" id="L39fsnotify_58"5id="Ldelete &g, ;mnt/a>.Ls="line" name="L400"5 400<58>smp_mb();
mnt/a>.b);
mnteroo<_a>)Ls="line" name="L400"5 400<58>        8="fs/namespace.c#L455" i8="L4585class="sref">f">f_delisagsorfree_>mntou=d_inode" classfree_>mntou &g, ;mnt_a>)ss="line" name="L400"5 400<58>void sb_a>)ss="line" name="L400"5 400<58>
rs="line" name="L401"5 401<58>        8a href="+code=br_write_l8ck" c85class="line" name="L401"5 401<58>{
mnt_t_dropmntpu._no_expirec#L454" id="L39nampu._no_expire>mount *mnt)
        8span class="comment">/*<8span>85ass="s="line" name="L417"5 417<58>         * 8fter 86mnt         * 8hould861SY" #ifdef_ref="fs/namespaCONFIG_SMPode=MNT_READONLCONFIG_SMPlass="line" name="L401"5 401<58>         */8/span86y" class="sref">f_delisagsorbr_readhref="+code=vfsmount_loreadhref=>moun">vfsmount_lock);
mnmnt_a>)b);


 435        8span class="comment">/*<8span>86t"mb" class="sref">sm);
mntameaddrcnt"  &g, ;mnt_a>), -1ss="line" name="L400"5 400<58>
         * 8ith w86e=mnt_get_writers" clf">f_delisagsorbr_readhvfsmount_lock);
        8ss="comment">         * 8efini86te" class="sref">sb_e>;
{
         * 8ncrem86mnt->        8ss="comment">         * 8eeing86ass="sref">mnt_drop_writevfsmount_lock);
         *<8span>87class="line" name="L411"5 411<58>         * 8t is 87ss="sref">br_write_lock(_lolevfsmount_lock);
         * 8nothe87y" class="sref">f_delisagsor5vfeaddrcnt" class="sref">mntameaddrcnt"  &g, ;mnt_a>), -1ss="line" name="L400"5 400<58>         * 8um up873ss="sref">mnmntameget_cnt"  &g, ;mnt_a>)sLss="line" name="L417"5 417<58>         * 8ut th87t" class="sreclass="srrite_lock(_lolevfsmount_lock);
        8ss="comment">         * 8ecrem87t"mb" class="sref">sm>;

         * 8NT_WR876et =         8ss="comment">         * 8nt_wa87+code#else="line" name="L435"> 435{
         * 8NT_WR87mnt->mntameaddrcnt"  &g, ;mnt_a>), -1ss="line" name="L400"5 400<58>        8ss="comment">         * 8eྒྷass="sref">mnmntameget_cnt"  &g, ;mnt_a>)sLs="line" name="L396"4 396<48>         */8/span88mnt->-><>;
        8f (br_write_lock(_lolevfsmount_lock);
mnmnt_a>)b);
namepinned_a>)sLss="line" name="L417"5 417<58>(5vfeaddrcnt" class="sref">mntameaddrcnt"  &g, ;mnt_a>), ;mnt_a>)b);
namepinned_a>) + 1ss="line" name="L400"5 400<58>/*<8span>88t"mb" class="sref">sm;mnt_a>)b);
namepinned_a>) MNss="line" name="L400"5 400<58>
         * 8NT_RE88e=mnt_get_writers" clf">f_delisagsorbr_levfsmount_lock);
 8      return sb_end_write(vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
mnt_a>)ss="line" name="L400"5 400<58 {
 * th    */8/span88(&amr"5class="line" ngotoN;)s="line" name="L400"5 400<58         8a href="+code=mnt_mb, wc8ass="88USY" class="ss="line" name="L410"> 410        8a href="+code=mnt_incass8"sref89class="line" name="L411"5 411<58>        8a href="+code=preerite_l8ckun"89ss="sref">br_write_lock(ass="delclass="sref">mnass="del &g, ">vfsmount_lock)5vfsmclass="sref">mnt_a>)b);
        8eturn f_delisagsorbr_levfsmount_lock);
}
smp_mb();
mnt_a>)ss="line" name="L400"5 400<58>
m="line" name="L401"5 401<58>mnt_t_dropmntpu.c#L454" id="L39nampu.>mount *mnt)
        8a href="+code=br_write_l8ck" c89imisas="line" name="L417"5 417<58>{
-><        8a href="+code=mnt_rite_l8ckun"89USY" class="sref">EBUt *mnt)
mnt/a>. MNT_WRITE_HOLDmnreal_mnt" >moun);
mnt_a>)ss="line" name="L400"5 400<59>}
 4351
EBUmnt/a>.b);
 4352
sb_end_write(mnt/a>.b);
3   mntmnt/a>.Ls="line" name="L400"5 400<59>4
5
6
mnEXPORT_SYMBOL>moun);
7
8
 *mnt)
mnt)
9

-><1
EBUref="fs/namespa5vfeaddrcnt" class="sref">mntameaddrcnt"  &g, ;mnreal_mnt" >moun);
mnt_a>)s, 1ss="line" name="L400"5 400<59>        9a href="+code=preelisags9r_ co91="sref">ret;
mnt_a>)s="line" name="L400"5 400<59>{
        9       mnEXPORT_SYMBOL>moun);
5
m="line" name="L401"5 401<59>6
mnt_t_dropmntepinsmclass="sref">namepin>mount *mnt)
7
8
->vfsmount_lock);
mnt_drop_writemnreal_mnt" >moun);
mnt_a>)sb);
namepinned_a>)++s="line" name="L400"5 400<59>void ->vfsmount_lock);
        9="fs/namespace.c#L422" i9="L42921SY" s="line" name="L401"5 401<59>        9a href="+code=preempt_di9able"92="sre;mnEXPORT_SYMBOL>moun);
namepin>mouss="line" name="L400"5 400<59>{
        9a href="+code=preempt_en9ble" 92classss="sref">mnt_t_dropmnteunpinsmclass="sref">nameunpin>mount *mnt)
mnt/a>.L="line" name="L400"5 400<59>5
 366        9"fs/namespace.c#L427" id9"L42792e=mnt_get_writ *mnt)
mnreal_mnt" >moun);
mnt/a>.Ls="line" name="L400"5 400<59>7
/**
9a hre92ss="sref">br_write_lock(_lolevfsmount_lock);
    9ss="comment"> * mnt_drop9write92mnt-><);
namepinned_a>)sss="line" name="L417"5 417<59>id="L3749ss="comment"> * @mnt: th9 moun92USY" class="sref">EBUhref="+code=__m5vfeaddrcnt" class="sref">mntameaddrcnt"  &g, ;mnt_a>), 1ss="line" name="L400"5 400<59> *
<9 href93mnt->-><);
mnt_a>)b);
namepinned_a>)--s="line" name="L400"5 400<59>        9ss="comment"> * Tells th9 low-931SY" class="ss="line" name="L401"5 401<59>        9ss="comment"> * also all9ws fi93y" class="sref">f_delisagsorbr_levfsmount_lock);
 * mnt_want9write935class="line" name="L401"5 401<59>        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
nameunpin>mouss="line" name="L400"5 400<59>5
m="line" name="L401"5 401<59>
mnt_t_dropganglec#L454" id="L39nangle>mount *mnt/a>., const char href="fs/namespasc#L454" id="L39s/a>.L="line" name="L400"5 400<59>        9a href="+code=__mnt_drop9write93imisas="line" name="L417"5 417<59>    9a href="+code=sb_end_wri9e" cl93mnt->mnt/a>., ;"r\t\n\\"" classss="line" name="L400"5 400<59>id="L3749="fs/namespace.c#L440" i9="L4493USY" s="line" name="L401"5 401<59>
 435 435 435        9a href="+code=__mnt_drop9write9 class
 4355
 435
 435        9ref="+code=mnt_drop_writ9_file94+codef0;
mnt/a>., t *d_in href="fs/namesparooroo<_a>)L="line" name="L400"5 400<59>    9="fs/namespace.c#L449" i9="L4494 class="line" name="L449"> 449id="L3749a href="+code=mnt_drop_w9ite" 94USY" class="sconst char href="fs/namespaoptionsc#L454" id="L39options>mous="line" name="L400"5 400<59>}
br_write_lock(rcu_readhref="+code=vfsmountrcu_readhref=>mounss="line" name="L400"5 400<59>f_delisagsoroptionsc#L454" id="L39options>mou MNT_WRITE_HOLDroo<_a>)desb_a>)        9="fs/namespace.c#L455" i9="L4595class="sref">mnNULL>mou ">MNT">MNT_ref="fs/namespaoptionsc#L454" id="L39options>mou[0]sss="line" name="L417"5 417<59>void sm;moun);
mnt/a>., ;above.','" classss="line" name="L400"5 400<59>
f_delisagsorganglec#L454" id="L39nangle>moun);
mnt/a>., ;        9a href="+code=br_write_l9ck" c95+code=mnt"errs="line" name="L401"5 401<59>{
->mounss="line" name="L400"5 400<59>id="L3749span class="comment">/*<9span>95ass="="line" name="L400"5 400<59>         * 9fter 96mnt-><>;
         * 9hould961SY" s="line" name="L401"5 401<59>         */9/span96="sre;mnEXPORT_SYMBOL>moun);


 435        9span class="comment">/*<9span>96ted from -- we would see mor* If filesystem uses generic_show_options(), n>is function should b"d_class="line" name="L435"> 435
         * 9ith w96e=mntrom -- we would see mor* called from the fill_iuper() callback.d_class="line" name="L435"> 435        9ss="comment">         * 9efini96te" c
 435{
         * 9ncrem96"srefamespace.c#L383" id="L=* The .re5id="Lfs callback usually needs to be handled in a special" class="line" name="L435"> 435id="L3749ss="comment">         * 9eeing96ass="amespace.c#L383" id="L=*sway, to make sure, n>
< previous options are not overle"d_class="line" name="L435"> 435         *<9span>97mnt 435         * 9t is 97ss="swabove.
 435         * 9nothe97"fs/namespace.c#L383" id="L=* Also note, n>
< " filesystem's .re5id="Lfs function doesn'e" class="line" name="L435"> 435         * 9um up97 call above.
"ir default value, but changes only newlf &class="line" name="L435"> 435
         * 9ut th97class
 4r 96mnt-><>;
         * 9hould961SY" s="line" name="L401"5s

         * 9hould961SY" s="l        *       * 8nt_wa87+code#e9se="l97e mor* called from the fill_iuanyace.c.c#L383" id="L=* Also note, n>
< nt->m9t_a>)9 -1ss=>.L="line" name="L409_file94+codef0;
f_delisagso_file94+codef0;
<_a>)L="line" name="L400"5 40<58>
<,sr95ss="sref">br_write_lock(rcu_readhref="+code=vfs454" id="L39options>mous="li   8ss="c9mment">         * 8eྜྷass=97space.c#L451" i9="L4595class="linref">mnt_9>)sLs="line" name="L396"9 396<97<59>void vfsmount_lo href="fs/namespaoptionsc#L454" id="L39options>mou !MNT_WRITE_HO_lolevfsmount_lock<9a>);
98e.c#L422" i9="L42921SY" s="lname, "ign_spacef="+code=br_writename, "ign_spacef=/namespace.c#L465" i+code=vfsmount_levfsmount_lo href="fs/namespaoptionsc#L454" id=s9"sref95mnt-k="ldupfs/namespaoptiok="ldup/namespace.c#L465" i_lock(rcu_readhref="+code=vfss9"sref95mnt-GFP_KERNEe="L400"5 400<59GFP_KERNEe id=""L39options>mou !MNT_WRITE_HO_n>" files00<58>mouss="line" namref="+cod95vfsmclass="sref">mnt_a>9b98p_mb" cl9ss="s96 call="line" name="L400"5 400<59>
f_delisagso_file94+codef0;
<_a>)"L39options>mou !MNT_WRITE_HO_      * 9_a>)sLss="line" name="L497"5 498ould see mor* If filesystem usesef">mnt_a9)b);
f_delisagsrepancile94+codef0;
<_a>)L="line" name="L400"5 40<58>
<,sr95ss="sref">br_write_lock(rcu_readhref="+code=vfs454" id="L39options>mous="li
         * 89T_RE898Dmnreal="line" n9me="L400"5 400<58 272br_write_>    8ss="comment"> "sref">mnt_a>)ags |= <;vfsmount_lo href="fs/namespaoptionsc#L454" id=L39options>mou !MNT_WRITE_HO_mnt_a>)ss=9line"98nt_drop9write92mnt->vfsmount_lo href="fs/namespaoptionsc#L454" id=s9"sref95mnt-> 410<98>   98ass="sref">EBUhref="+code=__m5vf)5vfsmclass="sref">mnt_a>)','" classss="n"89ss="s9ef">br_write_lock(as9="del983mnt->-><);
       )5vfs9class="sref">mnt_a>)bm="line" name="L401")5vfsmclass="sref">mnt_a>)a href=9ss="comment">       " filestan 4"sress="line" name=9L400"99namespace.c#L458"5id="L400"5class="line" name="L409"5 400<58>}

f_delisagsrepancile94+codef0;
<_a>))a href=9ss="comment">       mnt_a9>mnt_t_dropmntpu.c#L454"9id="L99nampu href=9ss="comment">       <mnt)
<9 href9"fs/naf=>moun">vfsmount_lock);
PROC_FSclf">f_delisags);
PROC_FSampu href=9ss="comment">       <"line" n9" name="L396"4 396<48>  9     99 *  _semas5sus he.c...L454" id="L39seq_file)
_a>)L="line" name="L400"5 400<59>    9="fs/namespace.c#L449" i9="L4494 class="line" name="L449"> 4 i9="L4494 clasloff_>        9ss="coloff_>#L449" i9="L4494 claspof_delisagspo<=vfs454" id="L39options>mous="lia> *mnt99space.c#L451" i9="L4595class="linreal_mnt"9>moun);
);
 "sref">mnt_a>)ags);
d="L400"5class="line" nam10
1a hre9=10
an 4"sress="line" name=10
an>10
options>mou MNT_WRITE_HOLD  _semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam10
2a hre9=10
5 400<58>}
#L44c
9a hre93t" cp);
  hre &g, ">vfsmount_
f_delisags
<_a>) hre &g, ">vfsmount_sterc#L454" id="L39_a>) MNT,9" i9="L4494 claspof_delisagspo<=vfs45id="L400"5class="line" nam10
3a hre9=10
d8"L39589"fs/ns="line" 10
d8>10
="line" name="L400"5 400<59>5
10
nampu href=9ss="comment">      10
5a hre9=10
class="sref">mnt)
<10
cl>10
58cku96<48>      " i9="L4494 class_nex>        9ss="com_nex>_a>)L="line" name="L400"5 400<59>    9="fs/namespace.c#L449" i9="L4494 class="line" name="L449"> 4     " i9="L4494 clasv="line" name="Lv49"> 4 i9="L4494 clasloff_>        9ss="coloff_>#L449" i9="L4494 claspof_delisagspo<=vfs454" id="L39options>mous="l10
6a hre9=10
 name="L396"4 396<48>  10
 n>10
6pace.c#L451" i9="L4595class="li10
7a hre9=10
       8a href="+code=m10
  >10
7mntesb_a>)s="line" name="L400"5 40procock);
 "sref">mnt_a>)ags);
10
<8 href83class="line" name="L4110
9a hre9=10
moun);
#L44ck);
 4
9a hre93t" cp);
  hre &g, ">vfsmount_
f_delisags
<_a>) hre &g, ">vfsmount_sterc#L454" id="L39_a>) MNT,9 i9="L4494 claspof_delisagspo<=vfs45id="L400"5class="line" nam1015
mnt_a>)s, 1ss="li10"sr>105>        8a href="+code=mnt_dec1052a hre9=10>        9         >10528cku96<48>       i9="L4494 class_96op);
    9="fs/namespace.c#L449" i9="L4494 class="line" name="L449"> 4     " i9="L4494 clasv="line" name="Lv49">454" id="L39options>mous="l1013a hre9=10#L409" id="L39ce.ge.>mou10#L4>1053pace.c#L451" i9="L4595class="li1014a hre9=10   10   >105ref="+code=__mdeactivate_iupupe="L4fs/namespace.c#upe="L4#L44c
9a hre93t" cmment">  _semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam1015a hre9=10t" class="sref">mnt)10t" >105" name="L400"5 400<59>7
10ne">1056        8a href="+code=mnt_dec1057a hre9=10k);
)L="line" name="L400"5 400<59>    9="fs/namespace.c#L449" i9="L4494 class="line" name="L449"> 4     " i9="L4494 clasv="line" name="Lv49">454" id="L39options>mous="l1018a hre9=1000<59 id="L3749 class="l1000<>105space.c#L451" i9="L4595class="li1059a hre9=10d_a>)++s="line" name="L410d_a>105>mntesb_a>)s="line" name="L400"5 40procock);
 "sref">mnt_a>)ags);
        9="fs/10"5 >10"5mntesb_a>)s="line" name="L400"5 407
/**
9a hre92ss="s="+code=br_writent"> "sref">mnt_a>)ags<_get_wcode=mnt_drop_w9ite_get_wcode#L44ck);
 4"line" name="L400"5 407
/**namepin>m10smc>10"options>mou M N;  hre &g, ">vfsmount_e" n);
)L i9="L4494 class="line" name="L449"> 4
9a hre93t" c="+code=br_writent"> ="line" name="L400"5 400<58         8a href="+code=mnt_mb, wc8ass="88USY"10"2a hre9=10ode=mnt_dec_wr9ters"92 c10ode>10"e.c#L458"5id="L400"5class="line"10"3a hre9=10e=mnt" class="sref">mnt<10e=m>10"ould see mor* If filesystem use10"4a hre9=10ne" name="L400"5 400<59>10ne">10"ref="a9s="s="line" name="L400"5 400<5op_5atef="fs/namespaoption0<5op_5atef="ptionname="L400"5 407
/**nsc#t"> "sr.c#L451" i9="L4595class="li1025a hre9=1054" id="L396"4clas MNT_W1054">10"espace.c#L457. name="L400"5 406        9ss="coe6#L44 a href8"fs/namespac_96        9ss="com_96_a>),c#L451" i9="L4595class="li1026a hre9=10n);
10"6space.c#L457. name="L400"5 4nex>        9ss="conex>#L44  a href8"fs/namespac_nex>        9ss="com_nex>_a>),c#L451" i9="L4595class="li1027a hre9=1000<59>    9ss="comme1000<>10"7space.c#L457. name="L400"5 406c#hre9ss="comment96op_a>)  a href8"fs/namespac_96op);
 * @mnt: th9 moun910men>10"8space.c#L457. name="L400"5 40" n);
)  a href8"fs/namespac_9" n);
),c#L451" i9="L4595class="li1029a hre9=109ss="comment"> *
109ss>10"me="L4code=mnt_mb, wc8ass="88USY"103 * Tells th9 l10"co>10"cs/nafef="f);
10">        8a href="+code=mnt_dec1032a hre9=10"5 400<59>10"n>
 435nameunp10ins>10"ef=6 givenro84pens,35"> 4r 96mmay_ue94+cotree - checkBUhra9="L449tree is busomment">         * 9hould961SY" s=10"4a hre9=10code=mnt_drop_writ9" cla10cod>10"6 givenro82/9>         * 9hould961SY" s=10"5a hre9=1054" id="L39nangle>mount<1054">10"e mor* called from the fill_imment">         * 9hould961SY" s=10"6a hre9=10e)
 435{
  to checkBUhra9tree of9="L44s hasuanymment">         * 9hould961SY" s=10"7a hre9=10s="sref">mnt/a>., ;         * 9hould961SY" s=10"8a hre9=10">"r\t\n\\"" c10">&>10"="L=*sway, to make sure, n>
< buso.c#L383" id="L=* Also note, n>
< <10"9a hre9=10span>
10_de mode="+code=d_inode" may_ue94+cotree);
 *mnt)
10_="9code=91t" " name="L400"5 400<59>7
/**
9a hre92ss="sref">br_write_lock(_lolevfsmount_lock);

10_<58>vfe=d"fs/namespaoptioactu>vfe=d">(_loleXPORT_SYMBOL>moun);
(_loleXPORT_SYMBOL>moun);
7
/**
9a hre92ss="sp);
 PORT_SYMBOL>moun);
m1039g>10_6space.c#L457>
9a hre92ss="sBUG" id8"L45385y" claBUG" i/name!k);
mnt/a>., t 10s=">10_href="+code=+code=mnt" class="s10_8a hre9=10L400"5 400<59>}
10_comment">     hhref="+code=__m10_       *<8span>87class="line" nhref="fs/namespace.c#L454" id="L396"4clasb);
namepinned_a>)sss="line" name="L417"5 417<59>id="L10510"L      *<8spa or ck);
 "sref">mnt_a>)agsmnEXPhref="+codeout_fp);
 Phref="+codeout_fp);
 "sref">mnt_a>)ags/8/span88(&amr"5clanex>/8/st_lock);
 sm;mnt_a>), ;10"="L400"5 400<59>        9a href="+coactu>vfe=d"fs/namespaoptioactu>vfe=d">(_lo+sref">mnt_a>)ags        8f ( e" name="L417"5 417<59>id="L1052a hre9=10roo<_a>)(_lo+sr2" name="L417"5 417<59>id="L1053a hre9=10lass="sref">mnNULL>mou "10las>10"<58>mou[0]sss="line" na10ion>10"ref="+code=__mdeactivate_iupine" name="L401"5 401<59>        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);

   10 na>10"6space.c#L457Uhref="+code=__m5vfactu>vfe=d"fs/namespaoptioactu>vfe=d">(_lo"lin"+code=d_inode" minimumfe=d"fs/namespaoptiominimumfe=d">(_lf">mnt)
moun);
10"<8 href83class="line" name="L411059a hre9=10961SY" s="line" name="L410961>10"h8 low-831SY" N;moun);
10n>        8a href="+code=mnt_dec1062a hre9=10400<59>        9a href="+code=preempt_en9ble" 92classss="sref">mntay_ue94+cotree);
/*<9span>96ted from10ent>10nould see mor* If filesystem use1064a hre9=10how_options(), n>is func10how>10nuld b"d_class="line" name="L4imment">         * 9hould961SY" s=1065a hre9=10 9ith w96e=mntrom -- we 10 9i>10ne mor* called from the fill_iusay_ue94+c - checkBUhra9="L449space is busomment">         * 9hould961SY" s=1066a hre9=10
10n435"> 435{
         * 9hould961SY" s=1067a hre9=10ally needs to be handled10all>10necial" class="line" name="L435"> 435id="L3749ss="comment">10n8a hre9=109eeing96ass="amespace.c#109ee>10n="L=*sway, to make sure, n>
< pris isment">  to checkBUhra9="L449space hasuanymment">         * 9hould961SY" s=1069a hre9=10*<9span>97mnt10nee mor* re5id=" fails.d_class=op_ne, but, pwds,sr9 nams or sub9="L44s.upers 97ss="swabove.
 43510 n mor* called from the fill_ius"L449hasusub9="L44s efi6 giv=" N;         * 9hould961SY" s=1071a hre9=10ystem's .re5id="Lfs 10yst>10  doesn'e" class="line" na" Ngardlesa of9whes 9rbove.sub9="L44s ommebuso.c#L383" id="L=* Also note, n>
< <1072a hre9=10     * 9um up97 call abo10   >10 n>
 4r 96mD="+code5clatme="hrefauand stuff8 e=o acc"L44.upOW,linesomemend_clit giv=c#L383" id="L=* Also note, n>
< <1074a hre9=10="L401"5s
10="L>10 6 givenro82/9>10  *m10+co>10 ="+code="+code=d_inode" say_ue94+c);
 *v10 8a hre9=10mment">         * 8eཆmme>10 space.c#L451" i9="L4595class="li1079a hre9=10>)sLs="line" name="L396"10>)s>10 >(_lole1PORT_SYMBOL>moun);
vfsmount_lock<10ef=>10efef="+code=__mdeactivate_iupdowne="L4fs/namespace.c#Lowne="L4#L44c
9a hre93t" cmment">  _semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam1081a hre9=1000<58>10ecode=re8" cla88class#endif="line" name="L400"5 400<58>mnmnt_a>105vf>10e74"4i9="L4090Uhref="+code=__m5vfpropagatile94+cobuso);
mnclass="sref">mnt_a>)s="line" name="L400"5 400<59>{
)sLss="line" name="L410_a>>10et" class="sres="line" name="L401"5 4ropmntepinsmclass=rea>(_loleXPORT_SYMBOL>moun);
);
        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
         * 810s=">10e5ef="+code=__mdeactivate_iupupe="L4fs/namespace.c#upe="L4#L44c
9a hre93t" cmment">  _semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam1086a hre9=10me="L400"5 400<58 27210e6space.c#L457 N;mnt_a>)ss=10mcl>10e7.c#L458"5id="L400"5class="line"1088a hre9=10"line" name="L410"> 410<10"li>10e<8 href83class="line" name="L411089a hre9=10ef">br_write_lock(as10ef">10e9" name="L400"5 400<59>        9a href="+code=preempt_en9ble" 92classss="sref">mntay_ue94+c);
mnt_a>)b10cl8 href83class="line" name="L411091a hre9=10tan 4"sress="line" name=10tan>10ccode=/namespace.c#L426" ireleaseock);
 *) MNss="line" name=1092a hre9=10"5 400<58>}
10c2pace.c#L451" i9="L4595class="li1093a hre9=10id8"L39589"fs/ns="line" 10id8>10ct" class="sre" name="L400"5 400<59>7
/**
9a hre92ss="sref">br_write_lock(_l5id="L400"5class="line" nam1094a hre9=10>mnt_t_dropmntpu.c#L454"10>mn>10cref="+code=__wh bu e!k);
mnh"L4fs/namespace.c#h"L4t_wr_ ;mnt)
<10 cl>10cespace.c#L457" id9"L45795e=mnt_get_wref">br_write_lock(_lolemnh"L4fs/namespace.c#h"L4t_wr 4"line" name="L400"5 407
/**  10" n>10chref="+code=br_write_l9ck" c95+code=_get_del_inirc#L454" id="L39_a>)_del_inir#L44c
9a hre93t" c59>        9ss="comment"> * also all9ws fi93y" clhash00<58>        8f ()"5id="L400"5class="line" nam1097a hre9=10        8a href="+code=m10   >10cdrop_write        8f ({
10c8rop_write"+code=mnt_drop_w9ite" 94USY" class="sconst char"+code=mnt_drop_w9ite" 94USY" c5id="L400"5class="line" nam1099a hre9=10>moun);
7
/**
9a hre92ss="sr"fs/namespace.c#L4585id="L400"5class="line" nam11
11e="L435"> 4352
mn}
mntmnt_a>)agsmnEX * also all9ws fi93y" cl_m        8f (<_m110t" class="sres="line"sref">mntmnt_a>)agsmnEX * also all9ws fi93y" clpare 400<58>        8f (11ss="sref">mnEXs="line"sref">mntmnEX * also all9ws fi93y" cl_m        8f (<_mmnt_a>)agsmnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX. name="L400"5 4f (<_read95 call="line"f (<_reaL4005id="L400"5class="line" nam11
5a hre9=11
class="sref">mnt)
<11
cl>110espace.c#L457" id9"L4sref">mntmnEX * also all9ws fi93y" clpare 400<58>        8f (mnt_a>)agsmnEXPid="L400"5class="line" nam11
6a hre9=11
 name="L396"4 396<48>  11
 n>110href="+code=br_write_sref">mnt);
L458 ref="+code=vfsmount_lemnt        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
1108rop_write{
moun);

9a hre93t" c5"fs/namespace.c#L458 * also all9ws fi93y" ca h    retumnt_a>)s, 1ss="li11"sr>111="L400"5 400<59>        9a href="+co" cpuSYMBOLclass="sre" cpuS#L44c
9a hre93t" c5_SYMBOLclass="sref">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX+PORT_SYMBOL>moun);
        9         >11174"4i9="L4090458"5id="L400"5class="line"1113a hre9=11#L409" id="L39ce.ge.>mou11#L4>111="line" name="L400"5 400<59>5
11   >111nampu href=9ss="comment">      1115a hre9=11t" class="sref">mnt)11t" >111e mor* called from the fillL435"> 435
11ne">111435"> 435{
"d_cel   or 9ss="35"> 435
);
  _sem/must>"d_cel   or 9ss="35"> 435
111="L=*sway, to make sure, n>
<54" id="L39seq_file)
/**
9a hre92ss="sref">br_write_lock(_l,="e="+code=d_inode" propagati);
 *        9="fs/11"5 >11"5mntenamepin>m11smc>112code=re8" cla88class#endif="LIST_HEADfs/namespace.c#LIST_HEADL400"5 400<59>{
112="9code=91t" " name="L400"5 400<59>7
/**
9a hre92ss="sp);
 PORT_SYMBOL>moun);
mnt<11e=m>11"ould see mor* If filesystem use11"4a hre9=11ne" name="L400"5 400<59>11ne">112s="sref">mnEX or ck);
 "sref">mnt_a>)agsmnEXPhref="+codeout_fp);
 Phref="+codeout_fp);
 "sref">mnt_a>)ags/8/span88(&amr"5clanex>/8/st_lock);
 sm;{
112espace.c#L457" id9"L45795e=mnt_get_w_get_movi);
  hre &g, ">vfsmount_" clhash00<58>        8f () 4
9a hre93t" ctmp_sterc#L454" id="L39tmp_stermnEX+PORT_SYMBOL>moun);
1126        8a href="+code=mnt_dec1127a hre9=1100<59>    9ss="comme1100<>11"7space.c#L457Uhref="+code=__m5vfpropagati);
 * @mnt: th9 moun911men>1128rop_write *
119ss>112<59>     11= * Tells th9 l11"co>113fef="+code=__mdeactivate_iup_get_for_each_wcode=mnt_drop_w9ite_get_for_each_wcodet_lock);
 sm
9a hre93t" ctmp_sterc#L454" id="L39tmp_stermnEXsm;);
113="L400"5 400<59>        9a href="+co_get_del_inirc#L454" id="L39_a>)_del_inir#L44c
9a hre93t" cp);
  hre &g, ">vfsmount_" clexpire);
11374"4i9="L4090 class="+code=d_inode" _get_del_inirc#L454" id="L39_a>)_del_inir#L44c
9a hre93t" cp);
  hre &g, ">vfsmount_" clsterc#L454" id="L395vf_sterL458"5id="L400"5class="line" nam11"3a hre9=11insmclass="sref">nameunp11ins>113t" class="sres="line" name="L401"5 4__touch_5vf_ss="line"c#L454" id="L39__touch_5vf_ss="line"t_lock);
  hre &g, ">vfsmount_" cl="fs/namespaoptio" cl="L458"5id="L400"5class="line" nam11"4a hre9=11code=mnt_drop_writ9" cla11cod>113s="sref">mnEXs="line"k);
  hre &g, ">vfsmount_" cl="fs/namespaoptio" cl="L458"sref">mnt_a>)ags113espace.c#L457" id9"L45795e=mnt_get_w_get_del_inirc#L454" id="L39_a>)_del_inir#L44c
9a hre93t" cp);
  hre &g, ">vfsmount_" clchi5vfsmclass="sref"" clchi5vL458"5id="L400"5class="line" nam11"6a hre9=11e)
        8f ({
 e";mnt/a>., ;mnt  hre &g, ">vfsmount_" clpare 400<58>        8f ();
L458++5id="L400"5class="line" nam11"8a hre9=11">"r\t\n\\"" c11">&>1138rop_write);
  hre &g, ">vfsmount_" cl_m        8f (<_m
5
114" class="ss="line" name="L401"5 401<59>        859>);
 sm;{
114namespace.c#L458"5id="L400"5class="line"1142a hre9=114" i9="L4494 call above.114" >114smclass="sref">desb_a>)
9a hre93t" ctmp_sterc#L454" id="L39tmp_stermnEXs9"sref95mnt-killfs/namespace.c#kiv=c#wr_5id="L400"5class="line" nam11_3a hre9=11/span>
114="line" name="L400"5 400<59>5
      11_5a hre9=11r*5" class="line" name="11r*5>11458cku96<48>      "sref95mnt-shrink_subck);
/**
9a hre92ss="sref">br_write_lock(_l,="line" name="L400"5 40_get_h"L4fs/namespace.c#_get_h"L4t_writ *_a>)_5id="L400"5class="line" nam11_6a hre9=1139generic_show_options>m1139g>1146        8a href="+code=mnt_dec11_7a hre9=11s="sref">mnt/a>., t 11s=">114l8cku96<48> de="+code=d_inode" dolue94+c);
/**
9a hre92ss="sref">br_write_lock(_l,="e="+code=d_inode" flag>);
}
114space.c#L451" i9="L4595class="li1149a hre9=11411"5 411<59>114>mntesb_a>)s="line" name="L400"5 400<58>
mnt_a>)agsmnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX. name="L400"5 4f (< name="L411"5 411f (< nasss5id="L400"5class="line" nam11511"L      *<8spa"e="+code=d_inode" ropvalfs/namespace.c#ropvalasss5id="L400"5class="line" nam1151a hre9=11delisagsoroptionsc#L454"11del>115code=re8" cla88class#endif="LIST_HEADfs/namespace.c#LIST_HEADL400"5 400<59>{
)mnNULL>mou "11las>11"<58>mnt_a>)agsmnEX * also all9ws fi93y" cYMBOLclass="sref">mnEXs9"sref95mnt-flag>);
mou[0]sss="line" na11ion>11"ref="+code=__Uhref="+code=__m5vfropvalfs/namespace.c#ropvalasss see mor* If filesystem use11"5a hre9=11="L400"5 400<59>
   11 na>1156        8a href="+code=mnt_dec1157a hre9=11="line" name="L400"5 40011="l>11"drop_write 435
115="L=*sway, to make sure, n>








ns tlow user"comm to requestra9="L44space be expired ras 9rbovan35"> 435
 435
(ove.mark ismcleared by " cpuS())35"> 435
116 doesn'e" class="line" n







ns (2)bove.usage ef="+s== 1 [pare 4mLclass="] + 1 [syslue94+c]35"> 435
/*<9span>96ted from11ent>1163ef="+code=__Uhref="+code=__m5vfflag>);
)";is func11how>116s="sref">mnEXs="line"Uhre
9a hre93t" c5_SYMBOLclass="sref">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEXs== me="L401"5 401<5urre 400<58>        85urre 4mnEX * also all9ws fi93yd"fs/namespaoptiof<_a>) hre &g, ">vfsmount__read95 call="line"_reaL400. name="L400"5 4f (YMBOLclass="sref">mnEXs||a href="+code5vfsmclass="s1165a hre9=11 9ith w96e=mntrom -- we 11 9i>116espace.c#L457" id9"L4sreff="+code=__m5vfflag>);
116href="+code=br_write_sref">mn N;{
116href="+code=+code=mnt" class="s11n8a hre9=119eeing96ass="amespace.c#119ee>1168rop_write 435
97mnt11nee mor* re5id=" fails.d_classsssssssssssssss* probab=9sdocode5cla"liict=9stenrbove._GPL/he.c iflwe/examt 43511 n mor* called from the fill_ssssssssssssssss* av=" omm end_c, butlitges onla slowpas .c#L383" id="L=* Also note, n>
< <1171a hre9=11ystem's .re5id="Lfs 11yst>11  doesn'e" class="line" nssssssssssssssss*54" id="L39seq_file)
mn117t" class="sres="line"Uhref="+code=__m5vfead<"L400"5 400<58>        8f (
11="L>117s="sref">mnEXs="line"sref">mnt        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
117espace.c#L457" id9"L4sref">mn N;{
->5
m11+co>117drop_write        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
         * 8eཇmme>117<8 href83class="line" name="L411179a hre9=11>)sLs="line" name="L396"11>)s>1173mnt->->Uhre!k);

9a hre93t" c5_SYMBOLclass="sref">mnEX * also all9ws fi93y" clexpiry_mark);
vfsmount_lock<11ef=>118" class="ss="line" nasref">mn N;{
118namespace.c#L458"5id="L400"5class="line"11e2a hre9=115vfsmclass="sref">mnt_a>115vf>11874"4iid="L400"5class="line" nam11e3a hre9=11_a>)sLss="line" name="L411_a>>11et" class="sref called from the fillL435"> 435
);
 435
         * 811s=">118e mor* called from the fill_ssssssss*uass=",uand ovey giv="ovemselves holdn Nsources we.mus4mment">         * 9hould961SY" s=1186a hre9=11me="L400"5 400<58 272118435"> 435{
         * 9hould961SY" s=1187a hre9=11mclass="sref">mnt_a>)ss=11mcl>118ecial" class="line" name="L4ssssssss*uges oGeemefau" tiicky leu" do9itlineuser"commges obove.ue94+cobegin35"> 435
 410<11"li>118="L=*sway, to make sure, n>








nsmight fail to compleue on ove.firet run ovrough as os 9rboask635"> 435
br_write_lock(as11ef">118ee mor* re5id=" fails.d_clas







nsmust> N;         * 9hould961SY" s=119mnt_a>)b119n mor* called from the fill_







nsaboum  or ove.m"e fi.c#L383" id="L=* Also note, n>
< <1191a hre9=11tan 4"sress="line" name=11tan>119 doesn'e" class="line" n







n54" id="L39seq_file)
}
11974"4iid="L400"5class="line" nam1193a hre9=11id8"L39589"fs/ns="line" 11id8>1193ef="+code=__Uhref="+code=__m5vfflag>);
{

< hre &g, ">vfsmount_esc#hre9ss="commentnsc#t">  hre &g, ">vfsmount_ue94+cobeginc#L454" id="L39ue94+cobegin35>)";mnt_t_dropmntpu.c#L454"11>mn>119s="sref">mnEXs="line";{

< hre &g, ">vfsmount_esc#hre9ss="commentnsc#t">  hre &g, ">vfsmount_ue94+cobeginc#L454" id="L39ue94+cobegin35>)ef="+code=__m5vf name="L411"5 411<58>
moun);
mnt)
<11 cl>11cespace.c#L457458"5id="L400"5class="line"1196a hre9=11" name="L396"4 396<48>  11" n>1196        8a href="+code=mnt_dec1197a hre9=11        8a href="+code=m11   >119drop_write 435
119="L=*sway, to make sure, n>








nsNo sensm to grabbove._GPL/ or ovismeest, butleest9itself looa635"> 435
moun);
 435
 435
120 doesn'e" class="line" n







nsto rootfs.uGC wouldnevineuallyatme="commeof9efmeoldnLclass=".c#L383" id="L=* Also note, n>
< <12
2a hre9=12
5 400<58>}
120ef=6 givenro84pens,35"> 4r 9







n /rebnam - 96<48> binarymefaulwouldnclosm av="descriptorsuanrc#L383" id="L=* Also note, n>
< <12
4a hre9=12
mnt_t_dropmntpu.c#L454"12
mn>1206 givenro82/9>mnt)
<12
cl>120e mor* called from the fill_ssssssss*54" id="L39seq_file)
  12
 n>1206space.c#L457Uhre
9a hre93t" c5_SYMBOLclass="sref">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEXs== me="L401"5 401<5urre 400<58>        85urre 4mnEX * also all9ws fi93yd"fs/namespaoptiof<_a>) hre &g, ">vfsmount__read95 call="line"_reaL400. name="L400"5 4f (YMBOLclass="sref">mnEXst_wrm{
 435
120="L=*sway, to make sure, n>








ssssssss*uS,ecial end_  or &href;un="L44ing&href;  nam ...35"> 435
try to ree94+c it> Nadef=9.35"> 435
mnt_a>)s, 1ss="li12"sr>121="L400"5 400<59>        9a href="+coLowne9ss=");

9a hre93t" c name="L411"5 411<58>
< hre &g, ">vfsmount_esue94+c);
        9         >12174"4i9="L4090 class="Uhre!ef="+code=__m5vf name="L411"5 411<58>
< hre &g, ">vfsmount_esflag>);
mntmnt_a>)ags)ef="+code=__m5vf name="L411"5 411<58>
{
{
12   >121s="sref">mnEXs="line";{

< hre &g, ">vfsmount_esue94+c);
mnt)12t" >121espace.c#L457" id9"L4 N;12ne">1216space.c#L457458"5id="L400"5class="line"1217a hre9=12k);
       9a href="+coLowne9ss=");

9a hre93t" cmnt" clas_semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam1259a hre9=12d_a>)++s="line" name="L412d_a>121       *<8span>87class="line" nhref="fs/namespace.c#L454" id="L396"4clasb);
namepinned_a>)sss="line" name="L417"5 417<59>id="L122        9="fs/12"5 >122fef="+code=__mdeactivate_iupeviness="sref">namepevineef="++5id="L400"5class="line" nam1221a hre9=12smclass="sref">namepin>m12smc>122>        8a href="+code=mnt_dec12"2a hre9=12ode=mnt_dec_wr9ters"92 c12ode>12274"4i9="L4090Uhre!ef="+code=__m5vfflag>);
mnt<12e=m>122t" class="sres="line" name="L401"5 4shrink_subck);
mnEXsm
9a hre93t" cue94+costerc#L454" id="L39ue94+coster_a>)_5id="L400"5class="line" nam12"4a hre9=12ne" name="L400"5 400<59>12ne">122nampu href=9ss="comment">      12"5a hre9=1254" id="L396"4clas MNT_W1254">1225ef="+code=__mdeactivate_iupropvalfs/namespace.c#ropvalasss"sr-;{
1226space.c#L457Uhref="+code=__m5vfflag>);
mnf (YMBOLclass="sref">mnEXsm2+ ;    9ss="comme1200<>122drop_write);

9a hre93t" c5_SYMBOLclass="sref">mnEX * also all9ws fi93y" clsterc#L454" id="L395vf_sterL458"     8a href="+code=mnt_dec12"8a hre9=12ment"> * @mnt: th9 moun912men>1228rop_write{
mnf (YMBOLclass="sref">mnEXsm1sm
9a hre93t" cue94+costerc#L454" id="L39ue94+coster_a>)_5id="L400"5class="line" nam12"9a hre9=129ss="comment"> *
129ss>1223mnt->->mdeactivate_iupropvalfs/namespace.c#ropvalasss"srXPORT_SYMBOL>moun);
 * Tells th9 l12"co>123fef="+code=__458"5id="L400"5class="line"12"1a hre9=12vfsmount_lock);
123code=re8" cla88class#endif="line" nam="L401"5 401<59>        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
123smclass="sref">desb_a>)  _semL458"5id="L400"5class="line" nam12"3a hre9=12insmclass="sref">nameunp12ins>123<58>);
123s="sref">mnEX N;123espac458"5id="L400"5class="line"12"6a hre9=12e)
mnt/a>., ; 435
"r\t\n\\"" c12">&>123="L=*sway, to make sure, n>
< Now ue94+c cy, handle9="L449spaceslas.welllas.L_GPL devicee.c#L383" id="L=* Also note, n>
< <12"9a hre9=12span>
124n mor* called from the fill_ic#L383" id="L=* Also note, n>
< <1241a hre9=12k for filesystems which 12k f>124 doesn'e" class="line" na"We now support a flag  or ,orcsd.un="L44 like9efmeos 9rbges obig irocode5cc#L383" id="L=* Also note, n>
< <1242a hre9=124" i9="L4494 call above.124" >124n>
124ef=6 givenro84pens,35"> 4r 9654" id="L39seq_file)
      12_5a hre9=12r*5" class="line" name="12r*5>12458ckuref="+codeout_fSYSCALL_DEFINE2fs/namespace.c#SYSCALL_DEFINE2_a>)Lassss="sref">mnue94+c);
{
),si=",uf="+code=__m5vfflag>);
m1239g>1246    mnt/a>., t 12s=">124drop_write}
1248rop_write/**
9a hre92ss="sref">br_write_lock(_l5id="L400"5class="line" nam1249a hre9=12411"5 411<59>124>mntesb_a>)s="e="+code=d_inode" ropvalfs/namespace.c#ropvalasss5id="L400"5class="line" nam12512"L      *<8spa"e="+code=d_inode" looaupeflag>);
moun);
125>        8a href="+code=mnt_dec1252a hre9=12roo<_a>));
)s|m;{
mnNULL>mou "12las>125t" class="sres="line" N;{
mou[0]sss="line" na12ion>125nampu href=9ss="comment">      12"5a hre9=12="L400"5 400<59>
);
   12 na>125href="+code=br_write_l9ck" c95+code=_ooaupeflag>);
mnt_a>)ags125comment">       9a href="+coropvalfs/namespace.c#ropvalasss"sref">mnt_a>)agsmnAT_FDCWDfs/namespace.c#AT_FDCWDef="sm;{
),sl9ck" c95+code=_ooaupeflag>);
(_l5id="L400"5class="line" nam1261a hre9=12_show_optionsc#L454" id=12_sh>126code=re8" cla88class#endif="" cYMBOLclass="sref">mnEXs=    9a href="+coroass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX_5id="L400"5class="line" nam1262a hre9=12400<59>desb_a>){
/*<9span>96ted from12ent>1263ef="+code=__Uhref="+code=__m5vfpas );
mnEX * also all9ws fi93y" cl_read95 call="line"f (<_reaL400 see mor* If filesystem use1264a hre9=12how_options(), n>is func12how>126s="sref">mnEXs="line"goto f="+code=__m5vf"puS_and_ouSYMBOLclass="sre"puS_and_ouSasss5id="L400"5class="line" nam1265a hre9=12 9ith w96e=mntrom -- we 12 9i>126espace.c#L457Uhre!f="+code=__m5vfcheck/8/span88(&amr"5clacheck/8/s_a>)Lassss="sref">mnf (YMBOLclass="sref">mnEX"     8a href="+code=mnt_dec1266a hre9=12
126href="+code=br_write_goto f="+code=__m5vf"puS_and_ouSYMBOLclass="sre"puS_and_ouSasss5id="L400"5class="line" nam1267a hre9=12ally needs to be handled12all>126href="+code=+code=mnt" class="s12n8a hre9=129eeing96ass="amespace.c#129ee>126comment">       9a href="+coropvalfs/namespace.c#ropvalasss"sr-;{
97mnt12694"4i9="L4090Uhre!f="+code=__m5vfcapablmfs/namespace.c#capablm_a>)Lassss="sref">mnCAP_SYS_ADMIid8"L45385y" claCAP_SYS_ADMIimnEX"     8a href="+code=mnt_dec127 435127" class="ss="line" nagoto f="+code=__m5vf"puS_and_ouSYMBOLclass="sre"puS_and_ouSasss5id="L400"5class="line" nam1271a hre9=12ystem's .re5id="Lfs 12yst>127>        8a href="+code=mnt_dec1272a hre9=12     * 9um up97 call abo12   >127smclass="sref">desb_a>)mnf (YMBOLclass="sref">mnEXsmf="+code=__m5vfflag>);
127t" clf="+code=__m5vf"puS_and_ouSYMBOLclass="sre"puS_and_ouSasss:id="L400"5class="line" nam1274a hre9=12="L401"5s
12="L>127s="sref">mnEX" class="line" name="LL4 we.mus4code5clacav="pas _puS()las.efaulwouldnclear s clexpiry_mark9654" id="L39seq_file)
{
->mnf (puS_nolexpire);
mnf (YMBOLclass="sref">mnEX"5id="L400"5class="line" nam1277a hre9=12+code5vfsmclass="sref">m12+co>127drop_f="+code=__m5vfouSYMBOLclass="sreoua>(_l:id="L400"5class="line" nam1278a hre9=12mment">         * 8e཈mme>127comment">     N;)sLs="line" name="L396"12>)s>1273mnt<458"5id="L400"5class="line"128vfsmount_lock<12ef=>128l8 href83class="line" name="L411281a hre9=1200<58>128names#ifdef" name="L401"5 4__ARCH_WANT_SYS_OLDUMOUNT);
mnt_a>125vf>12874"4iid="L400"5class="line" nam12e3a hre9=12_a>)sLss="line" name="L412_a>>128ef=6 givenro84pens,35"> 4r L435"> 435
);
    The 2.0 compatiblm ue94+c.sNo flag>.c#L383" id="L=* Also note, n>
< <1285a hre9=12s="comment">         * 812s=">128e mor* called from the fill_654" id="L39seq_file)
128435"> ef="+codeout_fSYSCALL_DEFINE1);
mnoldue94+c);
{
)     8a href="+code=mnt_dec1287a hre9=12mclass="sref">mnt_a>)ss=12mcl>128ecial 410<12"li>128comment">     N;mn namfs/namespace.c#mmen_a>),s0"5id="L400"5class="line" nam1289a hre9=12ef">br_write_lock(as12ef">1283mnt<458"5id="L400"5class="line"129mnt_a>)b129l8 href83class="line" name="L411291a hre9=12tan 4"sress="line" name=12tan>129 does#endifef83class="line" name="L411292a hre9=12"5 400<58>}
12974"4iid="L400"5class="line" nam1293a hre9=12id8"L39589"fs/ns="line" 12id8>1293ef="96<48> de="+code=d_inode" e94+cois_safe);
mnt_t_dropmntpu.c#L454"12>mn>129s="srmnt)
<12 cl>129espace.c#L457Uhref="+code=__m5vfcapablmfs/namespace.c#capablm_a>)Lassss="sref">mnCAP_SYS_ADMIid8"L45385y" claCAP_SYS_ADMIimnEX"     8a href="+code=mnt_dec1296a hre9=12" name="L396"4 396<48>  12" n>129href="+code=br_write_ N;moun);
129="L=*#ifdef" name="L401"5 4notyespan88(&amr"5clanotyes4"4iid="L400"5class="line" nam1299a hre9=12>moun);
{
130" class="ss="line" na N;{
13014"4i9="L4090Uhref="+code=__m5vfpas );
{
}
130t" class="sres="line"sref">mn N;{
130s="sref">mnEX458"5id="L400"5class="line"13
5a hre9=13
class="sref">mnt)
<13
cl>130espace.c#L457Uhref="+code=__m5vfini93_permission00<58>        8ini93_permissionL400"5 400<59>{
{
  13
 n>130href="+code=br_write_ N;{
130="L=*#endifef83class="line" name="L4113
9a hre9=13
moun);
mnt_a>)s, 1ss="li13"sr>131="L40"line" name="L400"5 407
/**
9a hre92ss="scopyotree);
/**
9a hre92ss="sref">br_write_lock(_l,="line" name="L400"5 40"+code=mnt_drop_w9ite" 94USY" cln>
9a hre92ss="s"+code=mnt_drop_w9ite" 94USY" c,ef83class="line" name="L411312a hre9=13>        9         >13174"4i9="L4090 class=""""""""""""""""""""""""""e="+code=d_inode" flag);
13   >131s="sref">mnEX"line" name="L400"5 407
/**
9a hre92ss="sre>);
mnt)13t" >131espace.c#L457"line" name="L400"5 40pas );
13ne">1316        8a href="+code=mnt_dec1317a hre9=13k);
{
mnf (YMBOLclass="sref">mnEX"     8a href="+code=mnt_dec1318a hre9=1300<59 id="L3749 class="l1300<>1318rop_write)L-;{
)++s="line" name="L413d_a>131     id="L400"5class="line" nam132        9="fs/13"5 >132fef="+code=__mdeactivate_iupre>);
)Lassss="sref">mnf (YMBOLclass="sref">mnEXsmf="+code=__m5vf"+code=mnt_drop_w9ite" 94USY" c,"+code=d_inode" flag);
namepin>m13smc>13214"4i9="L4090Uhref="+code=__m5vfIS_eRR);
mnq);
13274"4i9="L4090 class=" N;mnt<13e=m>132t" clid="L400"5class="line" nam1324a hre9=13ne" name="L400"5 400<59>13ne">1324ef="+code=__mdeactivate_iupq);
vfsmount_" cl_m        8f (<_mmnt_a>)agsmnEX * also all9ws fi93y" cl_m        8f (<_m1325ef="id="L400"5class="line" nam1326a hre9=13n);
132href="+code=bassss="sref">mnp);
mnt_a>)agsmnEX5id="L400"5class="line" nam1327a hre9=1300<59>    9ss="comme1300<>132drop_writemnt_a>)ags<_get_for_each_+code=mnt_drop_w9ite_get_for_each_+code_a>)Lassss="sref">mnr);
mnEX * also all9ws fi93y" cl_m);
Y" c,"+code=d_inode" " clchil4fs/namespace.c#" clchil4mnEX"; * @mnt: th9 moun913men>1328rop_write/**
9a hre92ss="s>);
 *
139ss>1323mnt->->Uhre!f="+code=__m5vfis_subdir);
mnr);
        8f (<_m * Tells th9 l13"co>133" class="ss="line" nasref">mncontinue5id="L400"5class="line" nam13"1a hre9=13vfsmount_lock);
133>        8a href="+code=mnt_dec1332a hre9=13"5 400<59>13374"4i9="L4090 class=" or ef="+code=__m5vf );
)Lassss="sref">mns);
nameunp13ins>133t" class="sres="line"sref">mnUhre!ef="+code=__m5vfflag);
{
mns);
133s="sref">mnEXXXXXXXXXXXXXXXXXXXXXXXXXref="+codeout_fs);
mns);
133espace.c#L457" id9"L4sref">mnsref">mncontinue5id="L400"5class="line" nam13"6a hre9=13e)
mn458"5id="L400"5class="line"13"7a hre9=13s="sref">mnt/a>., ;        8f ("r\t\n\\"" c13">&>1338rop_writemnt_a>)ags        8f (
vfsmount_" clpare 400<58>        8f (134" class="ss="line" nasref">mn458"5id="L400"5class="line"1341a hre9=13k for filesystems which 13k f>134="L400"5 400<59>     XXXXXXXXref="+codeout_fp);
mnt_a>)ags<>);
13474"4i9="L4090 class="""""""""name="L400"5 40pas );
mnEXs=m
9a hre93t" cq);
vfsmount_" cYMBOLclass="sref">mnEX5id="L400"5class="line" nam1343a hre9=13/span>
134t" class="sres="line"sref">mntmnt_a>)ags        8f (<_mmnEXs="line"sref">mnt)Lassss="sref">mnp);
mnt_a>)agsmnEX. name="L400"5 4f (l_read95 call="line"f (<_reaL400,"+code=d_inode" flag);
mnUhref="+code=__m5vfIS_eRR);
mnq);
mnnnnnnnnngoto f="+code=__m5vfouSYMBOLclass="sreoua>(_l5id="L400"5class="line" nam13_7a hre9=13s="sref">mnt/a>., t 13s=">134drop_write);
namepinned_a>)sss="line" name="L417"5 417<59>id="L13_8a hre9=13L400"5 400<59>}
1348rop_write{
);
vfsmount_" clsterc#L454" id="L395vf_sterL458sm
9a hre93t" cre>);
id="L13_9a hre9=13411"5 411<59>1343mnt->->s="line"so all9ws fi93yattach_" cYMBOLclass="sreattach_" c_a>)Lassss="sref">mnq);
135" class="ss="line" nasref">mnf="+code=__m5vf" nhref="="L401"5 401<59>        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
135="L400"5 400<59>     458"5id="L400"5class="line"1352a hre9=13roo<_a>)mnNULL>mou "13las>135t" class="sre N;asssPORT_SYMBOL>moun);
mou[0]sss="line" na13ion>135nampuf="+code=__m5vfouSYMBOLclass="sreoua>(_l:id="L400"5class="line" nam13"5a hre9=13="L400"5 400<59>
);
   13 na>135href="+code=br_write_l9ck" c95+code=LIST_HEADfs/namespace.c#LIST_HEAD_a>)Lassss="sref">mnue94+costerc#L454" id="L39ue94+coster_a>)_5id="L400"5class="line" nam1357a hre9=13="line" name="L400"5 40013="l>135drop_write);
namepinned_a>)sss="line" name="L417"5 417<59>id="L1358a hre9=13ame="L400"5 400<59>1358rop_writemnue94+cotree);
mnre>);
        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
mnreleaseock);
136namespace.c#L458"5id="L400"5class="line"1362a hre9=13400<59>/*<9span>96ted from13ent>1363ef="458"5id="L400"5class="line"1364a hre9=13how_options(), n>is func13how>136nampu href=9ss="comment">      1365a hre9=13 9ith w96e=mntrom -- we 13 9i>136e mor* called from the fill/* Caller shouldncheckf N;1366        8a href="+code=mnt_dec1367a hre9=13ally needs to be handled13all>136href="line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="
9a hre92ss="scolleccl_m);
136comme97mnt13694"4i9="L4090"line" name="L400"5 407
/**
9a hre92ss="stree);
 435137fef="+code=__mdeactivate_iupLowne9ss=");

9a hre93t" cmnt" clas_semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam1371a hre9=13ystem's .re5id="Lfs 13yst>137code=re8" cla88class#endif="tree);
)Lassss="sref">mnreass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX)smef">mnt_a>)ags{
{
137<58>  _semL458"5id="L400"5class="line" nam1374a hre9=13="L401"5s
13="L>137s="sref">mnEXUhref="+code=__m5vfIS_eRR);
mntree);
->
9a hre93t" ctree);
vfsmount_" cYMBOLclass="sref">mnEX5id="L400"5class="line" nam1377a hre9=13+code5vfsmclass="sref">m13+co>137drop_458"5id="L400"5class="line"1378a hre9=13mment">         * 8eཉmme>137comme58"5id="L400"5class="line"1379a hre9=13>)sLs="line" name="L396"13>)s>1373mnt<     so all9ws fi93y"rop_colleccedl_m);
_a>)L"line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="
9a hre92ss="s" cYMBOLclass="sref">mnEX)58"5id="L400"5class="line"138vfsmount_lock<13ef=>138l8 hr138code=re8" cla88class#endif="LIST_HEADfs/namespace.c#LIST_HEAD_a>)Lassss="sref">mnue94+costerc#L454" id="L39ue94+coster_a>)_5id="L400"5class="line" nam1382a hre9=135vfsmclass="sref">mnt_a>135vf>138smclass="sref">desb_a>)  _semL458"5id="L400"5class="line" nam13e3a hre9=13_a>)sLss="line" name="L413_a>>138<58>);
namepinned_a>)sss="line" name="L417"5 417<59>id="L1384a hre9=13)b);
mnreass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX)sm0sm
9a hre93t" cue94+costerc#L454" id="L39ue94+coster_a>)_5id="L400"5class="line" nam1385a hre9=13s="comment">         * 813s=">1385ef="+code=__mdeactivate_iup" nhref="="L401"5 401<59>        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
138href="+code=bassss="sref">mnupe9ss=");

9a hre93t" cmnt" clas_semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam1387a hre9=13mclass="sref">mnt_a>)ss=13mcl>138drop_writemnt_a>)ags);
 410<13"li>138comme458"5id="L400"5class="line"1389a hre9=13ef">br_write_lock(as13ef">138     id="L400"5class="line" nam139mnt_a>)b139l8 hr"e="+code=d_inode" s="ratile94+c>);
_a>)L"e="(n>
9a hre92ss="sf);
139="L400"5 400<59>     XXX"line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="
9a hre92ss="s_read95 call="line"_reaL400 see mor* If filesystem use1392a hre9=13"5 400<58>}
13974"4i139<58>/**
9a hre92ss="sref">br_write_lock(_l5id="L400"5class="line" nam1394a hre9=13>mnt_t_dropmntpu.c#L454"13>mn>139s="sref">mnEXUe="+code=d_inode" ro>);
)Lassss="sref">mnrread95 call="line"_reaL400smef">mnt_a>)agsmnt)
<13 cl>139espace.c#L457Uhref="+code=__m5vfro>);
  13" n>139href="+code=br_write_ N;asssPORT_SYMBOL>moun);
mnt_a>)ags<_get_for_each_+code=mnt_drop_w9ite_get_for_each_+code_a>)Lassss="sref">mnf (YMBOLclass="sref">mnEXsm
9a hre93t" creass="sref">mnt_a>)s="line" name="L400"5 400<59>{
vfsmount_" clsterc#L454" id="L395vf_sterL458sm&g, ">vfsmount_" clsterc#L454" id="L395vf_sterL458";1398rop_writemnro>);
)L
9a hre93t" cT_SYMBOLclass="sref">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEXsmef">mnt_a>)agsmoun);
);
asssPORT_SYMBOL>moun);
140namespace.c#L458"5id="L400"5class="line"14
2a hre9=14
5 400<58>}
moun);
1403ef="458"5id="L400"5class="line"14
4a hre9=14
mnt_t_dropmntpu.c#L454"14
mn>140nampu href=9ss="comment">      14
5a hre9=14
class="sref">mnt)
<14
cl>140espac96<48>      so all9ws fi93ycleanupegroupeid>);
/**
9a hre92ss="sref">br_write_lock(_l,="line" name="L400"5 407
/**
9a hre92ss="sen4fs/namespace.c#en4asss"id="L400"5class="line" nam14
6a hre9=14
 name="L396"4 396<48>  14
 n>1406    /**
9a hre92ss="sp);
140comme58"5id="L400"5class="line"14
9a hre9=14
moun);
mnt_a>)agsmnEX5Xref="+codeout_fp);
)Lassss="sref">mnp);
mnt_a>)agsmnEX" ;vfsmount_" clgroupeidc#L454" id="L395vf_groupeid clasmnp);
mnt_a>)s, 1ss="li14"sr>141="L400"5 400<59>     XXXXXXXXref="+codeout_ff (<_eleaseogroupeidc#L454" id="L395vf__eleaseogroupeid_a>)Lassss="sref">mnp);
moun);
        9         >14174"4i9="L4090458"5id="L400"5class="line"1413a hre9=14#L409" id="L39ce.ge.>mou14#L4>1413ef="458"5id="L400"5class="line"1414a hre9=14   14   >141nampu href=9ss="comment">      1415a hre9=14t" class="sref">mnt)14t" >141espac96<48> "e="+code=d_inode" snvevf_groupeid>);
/**
9a hre92ss="sref">br_write_lock(_l,=mdeactivate_iup"oolfs/namespace.c#"ool14ne">1416    );
/**
9a hre92ss="sp);
)++s="line" name="L414d_a>1413mnt-> or ef="+code=__m5vfp);
mnt_a>)agsmnEX5Xref="+codeout_fp);
)Lassss="sref">mnp);
mnt_a>)agsmnEX" :href="+codeout_fodeseq_putc=d_inode" classs ;        9="fs/14"5 >142" class="ss="line" naUhre!f="+code=__m5vfp);
vfsmount_" clgroupeidc#L454" id="L395vf_groupeid clasmnp);
namepin>m14smc>142="L400"5 400<59>     XXXXXXXX"e="+code=d_inode" err);
mnt_a>)agsmnp);
moun);
14274"4i9="L4090 class="line" naUhref="+code=__m5vferr);
mnt<14e=m>142t" class="sres="line"sref">mnXXXXXXXXref="+codeout_fcleanupegroupeid>);
br_write_lock(_l,=mdeactivate_iupp);
moun);
14ne">1424ef="+code=__________________________ N;moun);
142espace.c#L457" id9"L4sref">mn458"5id="L400"5class="line"1426a hre9=14n);
142href="+code=br_write_458"5id="L400"5class="line"1427a hre9=1400<59>    9ss="comme1400<>142drop_write * @mnt: th9 moun914men>142comme58"5id="L400"5class="line"1429a hre9=149ss="comment"> *
149ss>1423mnt-> N;moun);
 * Tells th9 l14"co>143" cla458"5id="L400"5class="line"14"1a hre9=14vfsmount_lock);
143>        8a href="+code=mnt_dec1432a hre9=14"5 400<59>14374"4igivenro84pens,35"> 4r L435"> 435
nameunp14ins>143ef=6 givenro84pens,35"> 4r s*">@source/8/s :h">/** tree to be attached35"> 435
1436 givenro82/9>@ndbr_write_: plomm theh">/** tree @source/8/s is attached35"> 435
143e mor* called from the fill_6">@pare 4_ndbr:aUhrnon-null, detach thehsource/8/s from its pare 4 and35"> 435
               storm thehpare 4 ">/** and _mmnt/a>., ;               (done when source/8/s is moved)c#L383" id="L=* Also note, n>
< <14"8a hre9=14">"r\t\n\\"" c14">&>1438rop_enro82/9>
NOTE:aUn thehtablm below exploins thehseman48>s when a source ">/**144" claenro82/9>of a givev type is attached to a " stination ">/** of a givev type.c#L383" id="L=* Also note, n>
< <1441a hre9=14k for filesystems which 14k f>144="L40enro82/9>14474"4igivenro84pens,35"> 4r s*"|         BIND MOUNT OPERATION+code=______________________________________|c#L383" id="L=* Also note, n>
< <1443a hre9=14/span>
144ef=6 givenro84pens,35"> 4r s*"|**************************************************************************c#L383" id="L=* Also note, n>
< <1444a hre9=14).d_class="line" name="L14).d>1446 givenro82/9>mnt/a>., t 14s=">144drop_enro82/9>}
1448rop_enro82/9>1443mnt145" claenro82/9>145="L40enro82/9>14574"4igivenro84pens,35"> 4r s*"***************************************************************************c#L383" id="L=* Also note, n>
< <1453a hre9=14lass="sref">mnNULL>mou "14las>145ef=6 givenro84pens,35"> 4r s*"A bind op"ration clones thehsource ">/** and _m1456 givenro82/9>/**.c#L383" id="L=* Also note, n>
< <14"5a hre9=14="L400"5 400<59>
   14 na>145href=enro82/9>/**saUn thehpropagationL4L383" id="L=* Also note, n>
< <14"7a hre9=14="line" name="L400"5 40014="l>145drop_enro82/9>     tree of theh" stination ">/** and thehcloned _m1458rop_enro82/9>     thehpeer group of thehsource ">/**.c#L383" id="L=* Also note, n>
< <14"9a hre9=14961SY" s="line" name="L414961>1453mnt/** and is marked35"> 435
>>>>>as shared. The cloned _m 435
146="L40enro82/9>/**.c#L383" id="L=* Also note, n>
< <1462a hre9=14400<59> 4r s*"(+++) theh">/** is propagated to all theh">/**saUn thehpropagation tree_aL383" id="L=* Also note, n>
< <1463a hre9=14ent">/*<9span>96ted from14ent>146ef=6 givenro84pens,35"> 4r s*">>>>>>of theh" stination ">/** and thehcloned _m     of thehss f maseer as that of thehsource ">/**. The cloned _m     is marked as 'sharedband slave'.c#L383" id="L=* Also note, n>
< <1466a hre9=14
146href=enro82/9>     source ">/**.c#L383" id="L=* Also note, n>
< <14n8a hre9=149eeing96ass="amespace.c#149ee>1468rop_enro82/9> 435147" claenro82/9>147="L40enro82/9> 4r s*"| source- hre | sharedbr_write|       privatete|       slaverite| unbindablm |c#L383" id="L=* Also note, n>
< <1473a hre9=14ut th97class147ef=6 givenro84pens,35"> 4r s*"| " stwrite|       br_write|        br_write|        br_write|        br_w|c#L383" id="L=* Also note, n>
< <1474a hre9=14="L401"5s
14="L>1476 givenro82/9>147href=enro82/9>m14+co>147drop_enro82/9>         * 8eཊmme>1478rop_enro82/9>)s>1473mntvfsmount_lock<14ef=>148" claenro82/9>mnt_a>145vf>14874"4igivenro84pens,35"> 4r s*"(+)ittheh_m 4r s*">>>>>all theh">/**saUn thehpropagation tree>of theh" stination ">/**.c#L383" id="L=* Also note, n>
< <1484a hre9=14)b);
         * 814s=">148e mor* called from the fill_6"(+++)ettheh_m148href=enro82/9>    all theh">/**sabelonging to theh" stination ">/**'shpropagation tree.c#L383" id="L=* Also note, n>
< <1487a hre9=14mclass="sref">mnt_a>)ss=14mcl>148drop_enro82/9>    theh_m 410<14"li>1488rop_enro82/9>br_write_lock(as14ef">1483mntmnt_a>)b149" claenro82/9>/** is a tree, thehop"rations exploinedbabove isc#L383" id="L=* Also note, n>
< <1491a hre9=14tan 4"sress="line" name=14tan>149="L40enro82/9>/** in thehtree.c#L383" id="L=* Also note, n>
< <1492a hre9=14"5 400<58>}
14974"4igivenro84pens,35"> 4r s*"Mustwbe called without spimments held, sinmm this function cenrsleepc#L383" id="L=* Also note, n>
< <1493a hre9=14id8"L39589"fs/ns="line" 14id8>149ef=6 givenro84pens,35"> 4r s*"in allocations.c#L383" id="L=* Also note, n>
< <1494a hre9=14>mnt_t_dropmntpu.c#L454"14>mn>1496 givenro82/9>mnt)
<14 cl>149espac96<48> "e="+code=d_inode" attach_rocursive/8/span88(&amr"5claattach_rocursive/8/s_a>)L"line" name="L400"5 407
/**
9a hre92ss="ssource/8/shre9ss="commentsource/8/s>(_l,L39seq_file)
  14" n>149href="+code=br_write_________"line" name="L400"5 40pas );
1498rop_write
9a hre92ss="sLIST_HEADfs/namespace.c#LIST_HEAD_a>)Lassss="sref">mntreelsterc#L454" id="L39treelsterasss"PORT_SYMBOL>moun);
moun);
/**
9a hre92ss="s" st/8/shre9ss="comment" st/8/sasssl=    9a href="+coroass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX)PORT_SYMBOL>moun);

9a hre92ss="s" st/"+code=mnt_drop_w9ite" st/"+codeasssl=    9a href="+copas );
moun);
150namespace.c#L"line" name="L400"5 407
/**
9a hre92ss="schil4fs/namespace.c#chil4mnEX,an>
9a hre92ss="sp);
150smclass="sref"e="+code=d_inode" err);
1503ef="ORT_SYMBOL>moun);
150s="sref">mnEXUhref="+code=__m5vfIS_MNT_SHAREDfs/namespace.c#IS_MNT_SHARED_a>)Lassss="sref">mn" st/8/shre9ss="comment" st/8/sasss" ;mnt)
<15
cl>150espace.c#L457" id9"L4+code=d_inode" err);
mnt_a>)ags);
moun);
  15
 n>150href="+code=br_write_Uhref="+code=__m5vferr);
150drop_write(_l5id="L400"5class="line" nam15
8a hre9=15
="+code=mnt" class="sre15
=">1508rop_writemnt_a>)agsmn" st/8/shre9ss="comment" st/8/sassssmf="+code=__m5vf"+st/"+code=mnt_drop_w9ite" st/"+codeassssmf="+code=__m5vfsource/8/shre9ss="commentsource/8/s>(_l,a
9a hre93t" ctreelsterc#L454" id="L39treelsterasss"PORT_SYMBOL>moun);
moun);
mnt_a>)s, 1ss="li15"sr>151="L400"5 400<59>     goto f="+code=__m5vfouS_cleanupeid>);
        9         >15174"4iid="L400"5class="line" nam1513a hre9=15#L409" id="L39ce.ge.>mou15#L4>151<58>);
namepinned_a>)sss="line" name="L417"5 417<59>id="L1514a hre9=15   15   >151nampu href=9ss="comment">      1515a hre9=15t" class="sref">mnt)15t" >151espace.c#L457Uhref="+code=__m5vfIS_MNT_SHAREDfs/namespace.c#IS_MNT_SHARED_a>)Lassss="sref">mn" st/8/shre9ss="comment" st/8/sasss" ;15ne">151href="+code=br_write_ or ef="+code=__m5vfp);
mnt_a>)ags)Lassss="sref">mnp);
mnt_a>)ags151drop_writemnp);
id="L1518a hre9=1500<59 id="L3749 class="l1500<>1518rop_write)++s="line" name="L415d_a>1513mnt->Uhref="+code=__m5vfpare 4_pas );
        9="fs/15"5 >152" class="ss="line" naassss="sref">mn" tach_" cYMBOLclass="sre" tach_" c_a>)L>
9a hre92ss="ssource/8/shre9ss="commentsource/8/s>(_l,a88class#endif="pare 4_pas );
id="L1521a hre9=15smclass="sref">namepin>m15smc>152="L400"5 400<59>     +code=d_inode" attach_" cYMBOLclass="sreattach_" c_a>)Lassss="sref">mnsource/8/shre9ss="commentsource/8/s>(_l,a88class#endif="pas );
15274"4i9="L4090 class="n>
9a hre93t" ctouch_" c_ss="line"c#L454" id="L39touch_" c_ss="line"_a>)Lassss="sref">mnsource/8/shre9ss="commentsource/8/s>(_l hre &g, ">vfsmount_" cln>);
rop__5id="L400"5class="line" nam15"3a hre9=15e=mnt" class="sref">mnt<15e=m>152t" class="sre} else;15ne">1524ef="+code=__________&g, ">vfsmount_" clset/8m        8f ()Lassss="sref">mn" st/8/shre9ss="comment" st/8/sassssmf="+code=__m5vf"+st/"+code=mnt_drop_w9ite" st/"+codeassssmf="+code=__m5vfsource/8/shre9ss="commentsource/8/s>(_l_5id="L400"5class="line" nam15"5a hre9=1554" id="L396"4clas MNT_W1554">152espace.c#L457" id9"L4>
9a hre92ss="scommicotree);
mnsource/8/shre9ss="commentsource/8/s>(_l_5id="L400"5class="line" nam15"6a hre9=15n);
152href="+code=b458"5id="L400"5class="line"1527a hre9=1500<59>    9ss="comme1500<>152drop_58"5id="L400"5class="line"1528a hre9=15ment"> * @mnt: th9 moun915men>1528rop_write
9a hre92ss="s_get_for_each_+code_safe);
mnchil4fs/namespace.c#chil4mnEX,aassss="sref">mnp);
vfsmount_" clhas );
 *
159ss>1523mnt->->mdeactivate_iup_get_del_inirc#L454" id="L39_get_del_inirlasb);
vfsmount_" clhas );
 * Tells th9 l15"co>153" class="ss="line" naassss="sref">mncommicotree);
mnchil4fs/namespace.c#chil4mnEX"5id="L400"5class="line" nam15=1a hre9=15vfsmount_lock);
153namespace.c#L458"5id="L400"5class="line"1532a hre9=15"5 400<59>153smclass="sref">desb_a>)        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
nameunp15ins>1533ef="ORT_SYMBOL>moun);
1534ef="+code=__ N;moun);
153e morORT_SYMBOL>moun);
);
mnt/a>., ;)Lassss="sref">mn" st/8/shre9ss="comment" st/8/sasss" id="L400"5class="line" nam15"8a hre9=15">"r\t\n\\"" c15">&>1538rop_writemncleanupegroupeid>);
moun);

(_l:id="L400"5class="line" nam1541540ef="+code=__ N;15474"4iid="L400"5class="line" nam1543a hre9=15/span>
154ef=6 96<48> "e="+code=d_inode" ref"s="sref">mnt_a>)s="liref"s="sre_a>)L"line" name="L400"5 40pas );

9a hre92ss="s" cYMBOLclass="sref">mnEXPORT_SYMBOL>moun);
m1539g>154href=e  9a href="+coroode=mnt_drop_w9iteroode>(_l:id="L400"5class="line" nam1547a hre9=15s="sref">mnt/a>., t 15s=">154drop_writemnt_a>)ags */
9a hre93t" cpas );
}
1548rop_write)Lassss="sref">mncants="sref">mnt_a>)s="licants="sre_a>)Lassss="sref">mnpas );
1543mnt->->mdeactivate_iupmutexf="L401"5 401<59>     mutexf="L401"> */
9a hre93t" cpas );
155" class="ss="line" na N;155namespace.c#L458"5id="L400"5class="line"1552a hre9=15roo<_a>)desb_a>)  _semL458"5id="L400"5class="line" nam1553a hre9=15lass="sref">mnNULL>mou "15las>155<58>mnEXl=    9a href="+colookupe" cYMBOLclass="srelookupe" c_a>)Lassss="sref">mnpas );
mou[0]sss="line" na15ion>155s="sref">mnEXUhref="+code=__m5vfmikele=mnt_drop_w9itemikele_a>)L!f="+code=__m5vff (YMBOLclass="sref">mnEX" id="L400"5class="line" nam1555a hre9=15="L400"5 400<59>
moun);
   15 na>155href="+code=bassss="sref">mnupe9ss=");

9a hre93t" cmnt" clas_semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam15"7a hre9=15="line" name="L400"5 40015="l>155drop_writemnt_a>)ags     mutexf="L401"> */
9a hre93t" cpas );
1558rop_write
9a hre92ss="spas _puSYMBOLclass="srepas _puS_a>)Lassss="sref">mnpas );
mnEXlsref">mnt_a>)agsmnEX5id="L400"5class="line" nam156mnt_a>)ags)Lassss="sref">mnT_SYMBOLclass="sref">mnEX * also all9ws fi93y" c__read95 call="line"" c__rearop_"5id="L400"5class="line" nam1561a hre9=15_show_optionsc#L454" id=15_sh>156namespace.c#Lgoto f="+code=__m5vfroode=mnt_drop_w9iteroode>(_l5id="L400"5class="line" nam1562a hre9=15400<59>/*<9span>96ted from15ent>1563ef="ORT_SYMBOL>moun);
is func15how>1566 giv96<48>      so all9ws fi93y="L401s="sref">mnt_a>)s="li="L401s="sre_a>)L"line" name="L400"5 40pas );
156e mor156href="+code=bassss="sref">mnupe9ss=");

9a hre93t" cmnt" clas_semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam1567a hre9=15ally needs to be handled15all>156drop_writemnt_a>)ags     mutexf="L401"> */
9a hre93t" cpas );
156comme458"5id="L400"5class="line"1569a hre9=15*<9span>97mnt156     id="L400"5class="line" nam157 435157" cla96<48> "e="+code=d_inode" grafcotree);
/**
9a hre92ss="sref">br_write_lock(_l,="line" name="L400"5 40pas );
157smclass="sref"href="+code=__m5vfT_SYMBOLclass="sref">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX.so all9ws fi93y" c_sbd95 call="line"" c_sbmnEX * also all9ws fi93ys_flag>);
157t" class="sres="line" N;(_l5id="L400"5class="line" nam1574a hre9=15="L401"5s
15="L>157nampu href=9ss="comment">      1575a hre9=15       * 8nt_wa87+code#e15   >157espace.c#L457Uhref="+code=__m5vfS_ISDIR);
mnpas );
      1576a hre9=15nt->mnT_SYMBOLclass="sref">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX.so all9ws fi93y" c__read95 call="line"" c__rearop_ * also all9ws fi93y"_ini93=mnt_drop_w9ite"_ini93Y" c * also all9ws fi93yi_mi93=mnt_drop_w9itei_mi93rop___id="L400"5class="line" nam1577a hre9=15+code5vfsmclass="sref">m15+co>157drop_write         * 8eཋmme>157comme58"5id="L400"5class="line"1579a hre9=15>)sLs="line" name="L396"15>)s>1573mnt->Uhref="+code=__m5vfdf="Linkedhre9ss="commentdf="Linked_a>)Lassss="sref">mnpas );
vfsmount_lock<15ef=>158" class="ss="line" na N;mnt_a>155vf>158smclass="sref N;)L>
9a hre92ss="sref">br_write_lock(_l,=assss="sref">mnpas );
moun);
)sLss="line" name="L415_a>>1583ef="458"5id="L400"5class="line"1584a hre9=15)b);
      1585a hre9=15s="comment">         * 815s=">158e mor* called from the fillL435"> 435
158href=enro82/9> to change/8/s_propagation.c#L383" id="L=* Also note, n>
< <1587a hre9=15mclass="sref">mnt_a>)ss=15mcl>158drop_enro82/9> 410<15"li>158comme58"5id="L400"5class="line"1589a hre9=15ef">br_write_lock(as15ef">1583mnt<96<48> "e="+code=d_inode" flag>_to_propagation_typeeq_putc=d_inodeflag>_to_propagation_type_a>)L"e="+code=d_inode" flag>eq_putc=d_inodeflag>rop__id="L400"5class="line" nam159mnt_a>)b159" cla159namespace.c#L"e="+code=d_inode" typeeq_putc=d_inodetype_a>)lsref">mnt_a>)agseq_putc=d_inodeflag>rop_s
9a hre92ss="sMS_REC);
moun);
}
15974"4iid="L400"5class="line" nam1593a hre9=15id8"L39589"fs/ns="line" 15id8>159<58> arehsets*54" id="L39seq_file)
mn>159s="sref">mnEXUhref="+code=__m5vftypeeq_putc=d_inodetype_a>)l
9a hre92ss="sMS_SHAREDfs/namespace.c#MS_SHAREDrop_s|mso all9ws fi93yMS_PRIVATEfs/namespace.c#MS_PRIVATErop_s|mso all9ws fi93yMS_SLAVEfs/namespace.c#MS_SLAVErop_s|mso all9ws fi93yMS_UNBINDABLEfs/namespace.c#MS_UNBINDABLEY" c)"58"5id="L400"5class="line"1595a hre9=15 class="sref">mnt)
<15 cl>159espace.c#L457" id9"L4 N;moun);
  15" n>159href="+code=b+ called from the fillL4 Only one propagation flag shouldwbe sets*54" id="L39seq_file)
159drop_write)L>
9a hre92ss="stypeeq_putc=d_inodetype_a>))"58"5id="L400"5class="line"1598a hre9=15f="+code=mnt" class="sre15f=">1598rop_writemoun);
moun);
160" cla458"5id="L400"5class="line"16
1a hre9=16
an 4"sress="line" name=16
an>160>        8a href="+code=mnt_dec16
2a hre9=16
5 400<58>}
 4r L435"> 435
160ef=6 givenro84pens,35"> 4r s*"rocursively change thehtype of theh8m1606 givenro82/9>mnt)
<16
cl>160espac96<48> "e="+code=d_inode" do_change/typeeq_putc=d_inodedo_change/type_a>)L"line" name="L400"5 40pas );
  16
 n>160href=/**
9a hre92ss="srhre9ss="comment"_a>)PORT_SYMBOL>moun);
1608rop_write/**
9a hre92ss="sref">br_write_lock(_ll=    9a href="+coroass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX)PORT_SYMBOL>moun);
)lsref">mnt_a>)ags)PORT_SYMBOL>moun);
mnt_a>)s, 1ss="li16"sr>161namespace.c#L"e="+code=d_inode" err);
{
16   >1614ef="+code=__________ N;mnt)16t" >161e morORT_SYMBOL>moun);
16ne">161href="+code=bUhref="+code=__m5vfpas );
mnEX * also all9ws fi93y" c__read95 call="line"" c__rearop_"ORT_SYMBOL>moun);
);
161comme58"5id="L400"5class="line"1659a hre9=16d_a>)++s="line" name="L416d_a>1613mnt->+code=d_inode" typeeq_putc=d_inodetype_a>)lsref">mnt_a>)ags_to_propagation_typeeq_putc=d_inodeflag>_to_propagation_type_a>)L+code=d_inode" flageq_putc=d_inodeflagrop__5id="L400"5class="line" nam162        9="fs/16"5 >162" class="ss="Uhre!f="+code=__m5vftypeeq_putc=d_inodetype_a>))id="L400"5class="line" nam1621a hre9=16smclass="sref">namepin>m16smc>162="L400"5 400<59>      N;(_l5id="L400"5class="line" nam16"2a hre9=16ode=mnt_dec_wr9ters"92 c16ode>16274"4iid="L400"5class="line" nam16"3a hre9=16e=mnt" class="sref">mnt<16e=m>162<58>  _semL458"5id="L400"5class="line" nam1624a hre9=16ne" name="L400"5 400<59>16ne">162s="sref">mnEXUhref="+code=__m5vftypeeq_putc=d_inodetype_a>)l=sref">mnt_a>)ags162espace.c#L457" id9"L4>
9a hre92ss="serr);
mnt_a>)ags);
br_write_lock(_l,=assss="sref">mnrocurseeq_putc=d_inoderocurse_a>)"5id="L400"5class="line" nam1626a hre9=16n);
162href="+code=br_write_Uhref="+code=__m5vferr);
162drop_write     ouSf="L401>(_l5id="L400"5class="line" nam16"8a hre9=16ment"> * @mnt: th9 moun916men>1628rop_write *
169ss>162     id="L400"5class="line" nam16= * Tells th9 l16"co>1630mnt->+code=d_inode" ine" namefs/namespace.c#L454" id="L396"4clasb);
namepinned_a>)sss="line" name="L417"5 417<59>id="L16=1a hre9=16vfsmount_lock);
163namespace.c#L or ef="+code=__m5vfrhre9ss="comment"_a>)lsref">mnt_a>)agsmnEX5ref">mnt_a>)ags)Pref">mnt_a>)ags)lsref="+code=__m5vfrocurseeq_putc=d_inoderocurse_a>)l?    9a href="+conext/8/span88(&amr"5clanext/8/s_a>)Lassss="sref">mnThre9ss="comment"_a>)sm&g, ">vfsmount_" cYMBOLclass="sref">mnEX) :a88class#endif="odeseq_putc=d_inode" classs  ORT_SYMBOL>moun);
16374"4i9="L4090 class="n>
9a hre93t" cchange/8/s_propagation);
mnThre9ss="comment"_a>)sm&g, ">vfsmount_typeeq_putc=d_inodetype_a>))" name="L417"5 417<59>id="L16=3a hre9=16insmclass="sref">nameunp16ins>163<58>        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
163nampu href=9ss="comment">      16"5a hre9=1654" id="L39nangle>mount<1654">163e mor f="+code=__m5vfouSf="L401"5 401<59>     ouSf="L401>(_l:id="L400"5class="line" nam16"6a hre9=16e)
mnupe9ss=");

9a hre93t" cmnt" clas_semfs/namespace.c#mment">  _semL458"5id="L400"5class="line" nam16"7a hre9=16s="sref">mnt/a>., ;"r\t\n\\"" c16">&>163comme458"5id="L400"5class="line"16"9a hre9=16span>
164" claenro82/9> 435
164="L40enro82/9>/**.c#L383" id="L=* Also note, n>
< <1642a hre9=164" i9="L4494 call above.164" >16474"4igivenro84pens,35"> 4r s*54" id="L39seq_file)
164ef=6 96<48> "e="+code=d_inode" do_loopbackeq_putc=d_inodedo_loopback_a>)L"line" name="L400"5 40pas );
     old_ss="rop_,L39seq_file)
) ORT_SYMBOL>moun);
mnLIST_HEADfs/namespace.c#LIST_HEAD_a>)Lassss="sref">mnuass="srterc#L454" id="L39uass="srterL458"5id="L400"5class="line" nam1647a hre9=16s="sref">mnt/a>., t 16s=">164drop_write}
1648rop_write/**
9a hre92ss="sref">br_write_lock(_ll=    9a href="+coodeseq_putc=d_inode" classs,an>
9a hre92ss="sol4fs/namespace.c#ol4mnEXPORT_SYMBOL>moun);
1643mnt->"e="+code=d_inode" err);
mnt_a>)ags{
165" class="ss="Uhref="+code=__m5vferr);
165="L400"5 400<59>      N;165smclass="sref"hre!f="+code=__m5vfold_ss=""5 401<59>     old_ss="rop_ || !n>
9a hre92ss="sold_ss=""5 401<59>     old_ss="rop_ ORT_SYMBOL>moun);
mnNULL>mou "16las>165t" class="sres="line" N;(_l5id="L400"5class="line" nam1654a hre9=16ions>mou[0]sss="line" na16ion>165s="sref">mnEX+code=d_inode" err);
mnt_a>)ags{
     old_ss="rop_,bassss="sref">mnLOOKUP_FOLLOWfs/namespace.c#LOOKUP_FOLLOWrop_|assss="sref">mnLOOKUP_AUTOMOUNT);

   16 na>165href="+code=br_write_ N;1658rop_write
9a hre92ss="serr);
mnt_a>)agsmnt_a>)s="liref"s="sre_a>)L5 400<59>{
(_l5id="L400"5class="line" nam1661a hre9=16_show_optionsc#L454" id=16_sh>166>        8a href="+code=mnt_dec1662a hre9=16400<59>desb_a>)mnt_a>)s="line" name="L400"5 400<59>{
mnEX)5id="L400"5class="line" nam1663a hre9=16ent">/*<9span>96ted from16ent>1663ef="ORT_SYMBOL>moun);
is func16how>166s="sref">mnEX+code=d_inode" err);
166espace.c#L457Uhref="+code=__m5vfIS_MNT_UNBINDABLEfs/namespace.c#IS_MNT_UNBINDABLEL400"5 400<59>{
moun);
166href="+code=br_write_goto f="+code=__m5vfouS2fs/namespace.c#ouS2>(_l5id="L400"5class="line" nam1667a hre9=16ally needs to be handled16all>166drop_58"5id="L400"5class="line"16n8a hre9=169eeing96ass="amespace.c#169ee>1668rop_write{
mnt_a>)s="line" name="L400"5 400<59>{
mnEX)) || !f="+code=__m5vfcheck/8/span88(&amr"5clacheck/8/sL400"5 400<59>{
moun);
97mnt1663mnt->->goto f="+code=__m5vfouS2fs/namespace.c#ouS2>(_l5id="L400"5class="line" nam167 435167" claid="L400"5class="line" nam1671a hre9=16ystem's .re5id="Lfs 16yst>1671space.c#L457Uhref="+code=__m5vfrocurseeq_putc=d_inoderocurse_a>) ORT_SYMBOL>moun);
16774"4i9="L4090 class="n>
9a hre93t" cref">br_write_lock(_ll=    9a href="+cocopyotree);
{
mnold_pas );
167t" class="sreelseid="L400"5class="line" nam1674a hre9=16="L401"5s
16="L>1674ef="+code=__________&g, ">vfsmount_" c">br_write_lock(_ll=    9a href="+coclone/8/span88(&amr"5claclone/8/sL400"5 400<59>{
mnold_pas );
167e morORT_SYMBOL>moun);
->mnT cYMBOLclass="sref">mnEX)) m16+co>167drop_write
9a hre92ss="serr);
mnt_a>)agsmnT cYMBOLclass="sref">mnEX)5id="L400"5class="line" nam1678a hre9=16mment">         * 8eཌmme>1678rop_write(_l5id="L400"5class="line" nam1679a hre9=16>)sLs="line" name="L396"16>)s>1673mnt->458"5id="L400"5class="line"168vfsmount_lock<16ef=>168" claid="L400"5class="line" nam1681a hre9=1600<58>1681space.c#L457>
9a hre92ss="serr);
mnt_a>)agsmnT cYMBOLclass="sref">mnEX,a88class#endif="pas );
mnt_a>165vf>168smclass="sref"href="+code=__m5vferr);
);
namepinned_a>)sss="line" name="L417"5 417<59>id="L1684a hre9=16)b);
vfsmount_uass="stree);
)Lassss="sref">mnT cYMBOLclass="sref">mnEX,a0,b
9a hre93t" cuass="srterc#L454" id="L39uass="srterL458"5id="L400"5class="line" nam1685a hre9=16s="comment">         * 816s=">168espace.c#L457" id9"L4>
9a hre92ss="sine" name="L401"5 401<59>        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
168href="+code=b458"5id="L400"5class="line"1687a hre9=16mclass="sref">mnt_a>)ss=16mcl>168drop_e="+code=__m5vfouS2fs/namespace.c#ouS2>(_l:id="L400"5class="line" nam1688a hre9=16"line" name="L410"> 410<16"li>1688rop_write
9a hre92ss="s="L401s="sref">mnt_a>)s="li="L401s="sre_a>)L88class#endif="pas );
br_write_lock(as16ef">1683mnt->+code=d_inode" releases="sre>);
"> */
9a hre93t" cuass="srterc#L454" id="L39uass="srterL458"5id="L400"5class="line" nam169mnt_a>)b169" claf="+code=__m5vfouSYMBOLclass="sreoua>(_l:id="L400"5class="line" nam1691a hre9=16tan 4"sress="line" name=16tan>1691space.c#L457>
9a hre92ss="spas _puSYMBOLclass="srepas _puS_a>)L
9a hre93t" cold_pas );
}
169smclass="sref N;1693ef="458"5id="L400"5class="line"1694a hre9=16>mnt_t_dropmntpu.c#L454"16>mn>169nampu href=9ss="comment">      1695a hre9=16 class="sref">mnt)
<16 cl>169espac96<48> "e="+code=d_inode" change/8ss="sflag>eq_putc=d_inodechange/8ss="sflag>_a>)L"line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="
9a hre92ss="s" cYMBOLclass="sref">mnEX, "e="+code=d_inode" ms_flag>);
  16" n>169href=1698rop_writemo>169     id="L400"5class="line" nam17
mclas170="L400"5 400<59>     +code=d_inode" roadonly_requeerc#L454" id="L39roadonly_requeerassslsr1PORT_SYMBOL>moun);
}
mnt_a>)ags<_/8/s_is_roadonlyc#L454" id="L39_/8/s_is_roadonly_a>)Lassss="sref">mnT cYMBOLclass="sref">mnEX))ORT_SYMBOL>moun);
170t" class="sres="line" N;moun);
170nampu href=9ss="comment">      17
5a hre9=17
class="sref">mnt)
<17
cl>170espace.c#L457Uhref="+code=__m5vfroadonly_requeerc#L454" id="L39roadonly_requeerasss)ORT_SYMBOL>moun);
  17
 n>170href="+code=br_write_+code=d_inode" error);
mnT c_make_roadonlyc#L454" id="L39T c_make_roadonlyL400"5 400<59>{
mnt_a>)s="line" name="L400"5 400<59>{
mnEX))PORT_SYMBOL>moun);
1708rop_writemnt_a>)ags<_/8/s_unmake_roadonlyc#L454" id="L39_/8/s_unmake_roadonlyL400"5 400<59>{
mnt_a>)s="line" name="L400"5 400<59>{
mnEX))PORT_SYMBOL>moun);
moun);
mnt_a>)s, 1ss="li17"sr>171>        8a href="+code=mnt_dec1712a hre9=17>        9         >17174"4igivenro84pens,35"> 4r L435"> 435
 4r s*"change filesystem flag>. dir shouldwbe a physical _rea of filesystem.c#L383" id="L=* Also note, n>
< <1714a hre9=17   17   >1716 givenro82/9>mnt)17t" >171e mor* called from the fills* on it -"tough luck.c#L383" id="L=* Also note, n>
< <1716a hre9=17ne" name="L396"4 396<49>17ne">171href=enro82/9>);
eq_putc=d_inodeflag>rop_, "e="+code=d_inode" m="sflag>eq_putc=d_inodem="sflag>_a>),L39seq_file)
moun);
)++s="line" name="L417d_a>1713mnt<        9="fs/17"5 >172" class="ss="Ue="+code=d_inode" err);
namepin>m17smc>172="L400"5 400<"line" name="L400"5 40super_b="+codeEXPORT_SYMBOsuper_b="+crop_wn>
9a hre92ss="ssbd95 call="line"sbmnEXlsrassss="sref">mnpas );
mnEX * also all9ws fi93y" c_sbd95 call="line"" c_sbmnEXPORT_SYMBOL>moun);
1722"L400"5 400<"line" name="L400"5 407
/**
9a hre92ss="sref">br_write_lock(_ll=    9a href="+coroass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX)PORT_SYMBOL>moun);
mnt<17e=m>1723ef="ORT_SYMBOL>moun);
17ne">172s="sref">mnEXUhre!f="+code=__m5vfcapablm);
{
172espace.c#L457" id9"L4 N;172drop_write{
mnEX))ORT_SYMBOL>moun);
 * @mnt: th9 moun917men>1728rop_write(_l5id="L400"5class="line" nam1729a hre9=179ss="comment"> *
179ss>172     id="L400"5class="line" nam17= * Tells th9 l17"co>173" class="ss="Uhref="+code=__m5vfpas );
mnEX * also all9ws fi93y" c__read95 call="line"" c__rearop_"ORT_SYMBOL>moun);
);
173="L400"5 400<59>      N;(_l5id="L400"5class="line" nam1732a hre9=17"5 400<59>17374"4iid="L400"5class="line" nam17=3a hre9=17insmclass="sref">nameunp17ins>173<58>mnt_a>)ags{
173s="sref">mnEXUhref="+code=__m5vferr);
173espace.c#L457" id9"L4 N;mnt/a>., ;mnt_a>)ags
9a hre93t" csbd95 call="line"sbmnEX * also all9ws fi93ys_uame="=mnt_drop_w9ites_uame="asss)5id="L400"5class="line" nam1738a hre9=17">"r\t\n\\"" c17">&>1738rop_writeeq_putc=d_inodeflag>rop_s
mnt_a>)ags_a>)L   9a href="+copas );
mnEX,a88class#endif="flag>eq_putc=d_inodeflag>rop__5id="L400"5class="line" nam174174" class="ss="elseid="L400"5class="line" nam1741a hre9=17k for filesystems which 17k f>174="L400"5 400<59>     +code=d_inode" err);
mnt_a>)ags<"o_reame="_sbd95 call="line""o_reame="_sbL400"5 400<59>{
174smclass="sref"hre!f="+code=__m5vferr);
174t" class="sres="line"+code=d_inode" ine" namefs/namespace.c#L454" id="L396"4clasb);
namepinned_a>)sss="line" name="L417"5 417<59>id="L1744a hre9=17).d_class="line" name="L17).d>1744ef="+code=__________+code=d_inode" m="sflag>eq_putc=d_inodem="sflag>_a>) |sref">mnt_a>)agsmnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX.so all9ws fi93y" c_flag>eq_putc=d_inodem="sflag>_a>) 
9a hre92ss="sT_SYMBOLclass="sref">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX.so all9ws fi93y" c_flag>eq_putc=d_inodem="sflag>_a>) srassss="sref">mnT c_flag>eq_putc=d_inodem="sflag>_a>)PORT_SYMBOL>moun);
m1739g>174href="+code=br_write_+code=d_inode" ine" name="L401"5 401<59>        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
mnt/a>., t 17s=">174drop_write}
1748rop_write
9a hre92ss="s=pe9ss=");

9a hre93t" csbd95 call="line"sbmnEX * also all9ws fi93ys_uame="=mnt_drop_w9ites_uame="asss)5id="L400"5class="line" nam1749a hre9=17411"5 411<59>1743mnt->Uhre!f="+code=__m5vferr);
175" class="ss="line" na+code=d_inode" ine" namefs/namespace.c#L454" id="L396"4clasb);
namepinned_a>)sss="line" name="L417"5 417<59>id="L1751a hre9=17delisagsoroptionsc#L454"17del>175="L400"5 400<59>     
nameptouch/8/s_ 417<59>iL400"5 400<59>{
mnEX * also all9ws fi93y" c_n>eq_putc=d_inodem="sn>rop__5id="L400"5class="line" nam1752a hre9=17roo<_a>)        9ss="comment"> */
9a hre93t" cl;mnEXPORT_SYMBOL>moun);
mnNULL>mou "17las>175t" class="sre458"5id="L400"5class="line"1754a hre9=17ions>mou[0]sss="line" na17ion>175s="sref">mnEX N;
   17 na>175href=ORT_SYMBOL>moun);
/**
9a hre92ss="sref">br_write_lock(_l ORT_SYMBOL>moun);
1758rop_/**
9a hre92ss="sp);
mnt_a>)agsmnEX5ref">mnt_a>)agsmnt_a>)agsmnt_a>)ags)Lassss="sref">mnp);
vfsmount_" cYMBOLclass="sref">mnEX)  176="L400"5 400<59>     Uhref="+code=__m5vfIS_MNT_UNBINDABLEfs/namespace.c#IS_MNT_UNBINDABLEL400"5 400<59>{
176smclass="srefr_write_ef">mnEX N;moun);
/*<9span>96ted from17ent>176t" class="sre458"5id="L400"5class="line"1764a hre9=17how_options(), n>is func17how>176s="sref">mnEX N;moun);
176espac458"5id="L400"5class="line"1766a hre9=17
176href=ORT_SYMBOL>moun);
176drop_96<48> "e="+code=d_inode" do_moves="sref">mnt_a>)s="lido_moves="sre_a>)L"line" name="L400"5 40pas );
     old_ss="rop_)ORT_SYMBOL>moun);
1768rop_97mnt1763mnt->"line" name="L400"5 40pas );
 4351770mnt->"line" name="L400"5 407
/**
9a hre92ss="sp);
177="L400"5 400<"line" name="L400"5 407
/**
9a hre92ss="sol4fs/namespace.c#ol4mnEXPORT_SYMBOL>moun);
17774"4i9="L4090"e="+code=d_inode" err);
{

17="L>1774ef="+code=__________ N;     old_ss="rop_ || !n>
9a hre92ss="sold_ss=""5 401<59>     old_ss="rop_ ORT_SYMBOL>moun);
->(_l5id="L400"5class="line" nam1777a hre9=17+code5vfsmclass="sref">m17+co>177drop_writemnt_a>)agsmnt_a>)ags{
     old_ss="rop_,bassss="sref">mnLOOKUP_FOLLOWfs/namespace.c#LOOKUP_FOLLOWrop_,b
9a hre93t" cold_pas );
         * 8eཌྷmme>1778rop_write)s>1773mnt->-> N;vfsmount_lock<17ef=>178" claid="L400"5class="line" nam1781a hre9=1700<58>1781space.c#L457>
9a hre92ss="serr);
mnt_a>)agsmnt_a>)s="liref"s="sre_a>)L5 400<59>{
mnt_a>175vf>178smclass="sref"href="+code=__m5vferr);
(_l5id="L400"5class="line" nam1784a hre9=17)b);
      1785a hre9=17s="comment">         * 817s=">178espace.c#L457>
9a hre92ss="sol4fs/namespace.c#ol4mnEXl=    9a href="+coroass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX)5id="L400"5class="line" nam1786a hre9=17me="L400"5 400<58 272178href="+code=bassss="sref">mnp);
mnt_a>)agsmnt_a>)s="line" name="L400"5 400<59>{
mnEX)PORT_SYMBOL>moun);
mnt_a>)ss=17mcl>178drop_58"5id="L400"5class="line"1788a hre9=17"line" name="L410"> 410<17"li>1788rop_write
9a hre92ss="serr);
br_write_lock(as17ef">1783mnt->Uhre!f="+code=__m5vfcheck/8/span88(&amr"5clacheck/8/sL400"5 400<59>{
{
moun);
mnt_a>)b179" class="ss="line" nagoto f="+code=__m5vfouS1YMBOLclass="sreoua1>(_l5id="L400"5class="line" nam1791a hre9=17tan 4"sress="line" name=17tan>179>        8a href="+code=mnt_dec1792a hre9=17"5 400<58>}
179smclass="sref"href="+code=__m5vfdcomminkedfs/namespace.c#dcomminkedL400"5 400<59>{
moun);
179t" class="sres="line"goto f="+code=__m5vfouS1YMBOLclass="sreoua1>(_l5id="L400"5class="line" nam1794a hre9=17>mnt_t_dropmntpu.c#L454"17>mn>179nampu href=9ss="comment">      1795a hre9=17 class="sref">mnt)
<17 cl>179espace.c#L457>
9a hre92ss="serr);
  17" n>179href="+code=bUhref="+code=__m5vfold_pas );
mnEX * also all9ws fi93y" c__read95 call="line"" c__rearop_"ORT_SYMBOL>moun);
(_l5id="L400"5class="line" nam1798a hre9=17f="+code=mnt" class="sre17f=">179comme58"5id="L400"5class="line"1799a hre9=17>moun);
{
moun);
(_l5id="L400"5class="line" nam18
1a hre9=18
an 4"sress="line" name=18
an>180>        8a href="+code=mnt_dec18
2a hre9=18
5 400<58>}
{
180t" class="sres="linf="+code=__m5vfS_ISDIR);
{
moun);
1804ef="+code=__________goto f="+code=__m5vfouS1YMBOLclass="sreoua1>(_l5id="L400"5class="line" nam18
5a hre9=18
class="sref">mnt)
<18
cl>180espace.c#L457givenro84pens,35"> 4r L435"> 435
  18
 n>180href=enro82/9>180drop_enro82/9>1808rop_write{
moun);
(_l5id="L400"5class="line" nam181 4r L435"> 435
mnt_a>)s, 1ss="li18"sr>181="L40enro82/9> 435
        9         >18174"4igivenro84pens,35"> 4r sssssssss* 8m 4r sssssssss*54" id="L39seq_file)
18   >181s="sref">mnEXUhref="+code=__m5vfIS_MNT_SHAREDfs/namespace.c#IS_MNT_SHAREDL400"5 400<59>{
)L5 400<59>{
moun);
mnt)18t" >181espace.c#L457" id9"L4goto f="+code=__m5vfouS1YMBOLclass="sreoua1>(_l5id="L400"5class="line" nam1816a hre9=18ne" name="L396"4 396<49>18ne">181href="+code=bassss="sref">mnerr);
);
mnt_a>)ags{
mnt_a>)agsmnt_a>)ags1818rop_write)++s="line" name="L418d_a>1813mnt->->" id9"L4goto f="+code=__m5vfouS1YMBOLclass="sreoua1>(_l5id="L400"5class="line" nam182        9="fs/18"5 >182" claid="L400"5class="line" nam1821a hre9=18smclass="sref">namepin>m18smc>1821space.c#L457>
9a hre92ss="serr);
mnt_a>)ags)L5 400<59>{

9a hre93t" cparevf_pas );
182smclass="sref"href="+code=__m5vferr);
mnt<18e=m>182t" class="sres="line"goto f="+code=__m5vfouS1YMBOLclass="sreoua1>(_l5id="L400"5class="line" nam1824a hre9=18ne" name="L400"5 400<59>18ne">182nampu href=9ss="comment">      18"5a hre9=1854" id="L396"4clas MNT_W1854">182espace.c#L457givenro84pens,35"> 4r L4f"hrthmh8m182href=enro82/9>allys*54" id="L39seq_file)
182drop_writemnt_a>)agsmnt_a>)s="lirter_delcinie_a>)L
9a hre93t" coldfs/namespace.c#ol4mnEX * also all9ws fi93y" c_expired95 call="line"" c_expire4"ss)PORT_SYMBOL>moun);
 * @mnt: th9 moun918men>1828rop_f="+code=__m5vfouS1YMBOLclass="sreoua1>(_l:id="L400"5class="line" nam1829a hre9=189ss="comment"> *
189ss>1823mnt->+code=d_inode" ="L401s="sref">mnt_a>)s="li="L401s="sre_a>)L88class#endif="pas );
 * Tells th9 l18"co>183" claf="+code=__m5vfouSYMBOLclass="sreoua>(_l:id="L400"5class="line" nam18=1a hre9=18vfsmount_lock);
1831space.c#L457Uhre!f="+code=__m5vferr);
183smclass="srefr_write_+code=d_inode" pas _puSYMBOLclass="srepas _puS_a>)L
9a hre93t" cparevf_pas );
nameunp18ins>183<58>183s="sref">mnEX N;183espac458"5id="L400"5class="line"18"6a hre9=18e)
mnt/a>., ;
9a hre92ss="sfs_set_subtyped95 call="line"fs_set_subtype_a>)L"line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="
9a hre92ss="s" cYMBOLclass="sref">mnEX, const charwn>
9a hre92ss="sfstyped95 call="line"fstype_a>) id="L400"5class="line" nam18=8a hre9=18">"r\t\n\\"" c18">&>1838rop_
184" class="ss="const charwn>
9a hre92ss="ssubtyped95 call="line"subtype_a>)lsref">mnt_a>)ags),7givenro84pensstring">'.'4" id=""5id="L400"5class="line" nam1841a hre9=18k for filesystems which 18k f>1841space.c#L457Uhref="+code=__m5vfsubtyped95 call="line"subtype_a>)  184smclass="srefr_write_+code=d_inode" subtyped95 call="line"subtype_a>)++5id="L400"5class="line" nam1843a hre9=18/span>
184t" class="sres="line"+code=d_inode" err);
)[0] id="L400"5class="line" nam1845a hre9=18r*5" class="line" name="18r*5>184espace.c#L457" id9"L444444444goto f="+code=__m5vferr);
mnt/a>., t 18s=">184drop_write
9a hre92ss="ssubtyped95 call="line"subtype_a>)lsreivenro84pensstring">""4" id="PORT_SYMBOL>moun);
}
184comme58"5id="L400"5class="line"1849a hre9=18411"5 411<59>1843mnt->+code=d_inode" T_SYMBOLclass="sref">mnEX * also all9ws fi93y" c_sbd95 call="line"" c_sbmnEX * also all9ws fi93ys_subtyped95 call="line"s_subtype_a>)lsref">mnt_a>)ags),a88class#endif="GFP_KERNEseq_putc=d_inodeGFP_KERNEsasss"5id="L400"5class="line" nam185185" class="ss="+code=d_inode" err);
moun);
1851space.c#L457Uhre!f="+code=__m5vfT_SYMBOLclass="sref">mnEX * also all9ws fi93y" c_sbd95 call="line"" c_sbmnEX * also all9ws fi93ys_subtyped95 call="line"s_subtype_a>) id="L400"5class="line" nam1852a hre9=18roo<_a>)moun);
mnNULL>mou "18las>185t" class="sre N;mnEX5ORT_SYMBOL>moun);
mou[0]sss="line" na18ion>185nampu href=9ss="comment">      1855a hre9=18="L400"5 400<59>
   18 na>185href="+code=bassss="sref">mnf">puSYMBOLclass="sref">puS_a>)L88class#endif="" cYMBOLclass="sref">mnEX)PORT_SYMBOL>moun);
1858rop_458"5id="L400"5class="line"1859a hre9=18961SY" s="line" name="L418961>185     id="L400"5class="line" nam186 "line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="186="L40name="L400"5 40do_kern_="sref">mnt_a>)s="lido_kern_="sre_a>)Lconst charwn>
9a hre92ss="sfstyped95 call="line"fstype_a>), "e="+code=d_inode" flag>eq_putc=d_inodeflag>rop_, const charwn>
9a hre92ss="s54" eq_putc=d_inode54" rop_,      n>
9a hre92ss="sdata=mnt_drop_w9ite"ataasss)ORT_SYMBOL>moun);
/*<9span>96ted from18ent>186t" class="sre"line" name="L400"5 40file_system_typed95 call="line"file_system_type
9a hre92ss="styped95 call="line"type_a>)lsref">mnt_a>)ags)L88class#endif="fstyped95 call="line"fstype_a>) PORT_SYMBOL>moun);
is func18how>186s="sref">mnEX"line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="
9a hre92ss="s" cYMBOLclass="sref">mnEXPORT_SYMBOL>moun);
186espace.c#L457Uhre!f="+code=__m5vftyped95 call="line"type_a>))ORT_SYMBOL>moun);
186href="+code=br_write_ N;) PORT_SYMBOL>moun);
186drop_writemnt_a>)agsbr_write_lock(_ll=    9a href="+coLcl_kern_="sref">mnt_a>)s="liLcl_kern_="sre_a>)L88class#endif="typed95 call="line"type_a>),a88class#endif="flag>eq_putc=d_inodeflag>rop_, 88class#endif="54" eq_putc=d_inode54" rop_, >
9a hre92ss="sdata=mnt_drop_w9ite"ataasss)PORT_SYMBOL>moun);
1868rop_write)L88class#endif="" cYMBOLclass="sref">mnEX) ) * also all9ws fi93yfs_flag>);
moun);
97mnt1863mnt->-!f="+code=__m5vfT_SYMBOLclass="sref">mnEX * also all9ws fi93y" c_sbd95 call="line"" c_sbmnEX * also all9ws fi93ys_subtyped95 call="line"s_subtype_a>) id="L400"5class="line" nam187 435187" class="ss="line" na+code=d_inode" ref">br_write_lock(_ll=    9a href="+cofs_set_subtyped95 call="line"fs_set_subtype_a>)L>
9a hre92ss="s" cYMBOLclass="sref">mnEX, 88class#endif="fstyped95 call="line"fstype_a>) PORT_SYMBOL>moun);
) PORT_SYMBOL>moun);
18774"4i9="L4090 N;mnEX5ORT_SYMBOL>moun);
1873ef="458"5id="L400"5class="line"1874a hre9=18="L401"5s
18="L>187nampu href=9ss="comment">      1875a hre9=18       * 8nt_wa87+code#e18   >187e mor* called from the fillL435"> 435
-> 435
m18+co>187drop_enro82/9>         * 8eཎmme>1878rop_96<48> "e="+code=d_inode" do_add_="sref">mnt_a>)s="lido_add_="sre_a>)L"line" name="L400"5 407
/**
9a hre92ss="snew8/span88(&amr"5clanewf">mnEX, "line" name="L400"5 40pas );
eq_putc=d_inodem="sflag>_a>) id="L400"5class="line" nam1879a hre9=18>)sLs="line" name="L396"18>)s>1873mnt<vfsmount_lock<18ef=>188" class="ss="Ue="+code=d_inode" err);
mnt_a>185vf>188smclass="sref+code=d_inode" T c_flag>eq_putc=d_inodem="sflag>_a>) moun);
);
mnt_a>)agsmnt_a>)s="liref"s="sre_a>)L5 400<59>{
         * 818s=">188espace.c#L457Uhre88class#endif="err);
188href="+code=br_write_ N;mnt_a>)ss=18mcl>188drop_58"5id="L400"5class="line"1888a hre9=18"line" name="L410"> 410<18"li>1888rop_write
9a hre92ss="serr);
br_write_lock(as18ef">1883mnt->Uhreso all9ws fi93yommikelyc#L454" id="L39ommikely_a>)L!f="+code=__m5vfcheck/8/span88(&amr"5clacheck/8/sL400"5 400<59>{
mnt_a>)s="line" name="L400"5 400<59>{
mnEX)))  mnt_a>)b189" class="ss="line" nagivenro84pens,35"> 4r L4fthat'shacceptablmhonlya or automm189="L400"5 400<59>     Uhre!L>
9a hre92ss="s" c_flag>eq_putc=d_inodem="sflag>_a>) }
189smclass="srefr_write_________goto f="+code=__m5vf="L401"5 401<59>     omment"> *5id="L400"5class="line" nam1893a hre9=18id8"L39589"fs/ns="line" 18id8>189t" class="sres="line"givenro84pens,35"> 4r L4f... and  or those wm'dwbetter haveh8mmnt_t_dropmntpu.c#L454"18>mn>1894ef="+code=__________Uhre!f="+code=__m5vfroass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX) * also all9ws fi93y" c_n>eq_putc=d_inodem="sn>rop__L39seq_file)
mnt)
<18 cl>189espace.c#L457" id9"L444444444goto f="+code=__m5vf="L401"5 401<59>     omment"> *5id="L400"5class="line" nam1896a hre9=18" name="L396"4 396<48>  18" n>189href="+code=b458"5id="L400"5class="line"1897a hre9=18        8a href="+code=m18   >189drop_58"5id="L400"5class="line"1898a hre9=18f="+code=mnt" class="sre18f=">1898rop_writeivenro84pens,35"> 4r L4fRefuse thmhss=" filesystem on thmhss=" 8mmoun);
 *5id="L400"5class="line" nam19
mnEX * also all9ws fi93y" c_sbd95 call="line"" c_sbmnEXls=    9a href="+conew8/span88(&amr"5clanewf">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX.so all9ws fi93y" c_sbd95 call="line"" c_sbmnEXlmoun);
190="L400"5 400<59> f="+code=__m5vfpas );
mnEX * also all9ws fi93y" c__read95 call="line"" c__rearop_ls=    9a href="+copas );
moun);
}
     omment"> *5id="L400"5class="line" nam19
3a hre9=19
d8"L39589"fs/ns="line" 19
d8>1903ef="ORT_SYMBOL>moun);
1904mclass="sref+code=d_inode" err);
mnt)
<19
cl>190espace.c#L457Uhre88class#endif="S_ISLNK);
{
mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX.so all9ws fi93y" c__read95 call="line"" c__rearop_ * also all9ws fi93y"_ini93fs/namespace.c#dcini93Y" c * also all9ws fi93yinam93fs/namespace.c#inam93asss) ORT_SYMBOL>moun);
  19
 n>190href="+code=br_write_goto f="+code=__m5vf="L401"5 401<59>     omment"> *5id="L400"5class="line" nam19
7a hre9=19
       8a href="+code=m19
  >190drop_58"5id="L400"5class="line"19
8a hre9=19
="+code=mnt" class="sre19
=">1908rop_write
9a hre92ss="snew8/span88(&amr"5clanewf">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX.so all9ws fi93y" c_flag>eq_putc=d_inodem="sflag>_a>) srassss="sref">mnT c_flag>eq_putc=d_inodem="sflag>_a>)PORT_SYMBOL>moun);
{
mnEX,a88class#endif="pas );
mnt_a>)s, 1ss="li19"sr>191="L40name="L400"5 40="L401"5 401<59>     omment"> *:id="L400"5class="line" nam1912a hre9=19>        9         >191smclass="sref+code=d_inode" ="L401s="sref">mnt_a>)s="li="L401s="sre_a>)L88class#endif="pas );
19   >191s="sr458"5id="L400"5class="line"1915a hre9=19t" class="sref">mnt)19t" >191espac58"5id="L400"5class="line"1916a hre9=19ne" name="L396"4 396<49>19ne">191href=enro82/9> 435
);
 435
1918rop_enro82/9> 435
)++s="line" name="L419d_a>1913mnt        9="fs/19"5 >192" cla96<48> "e="+code=d_inode" do_new_="sref">mnt_a>)s="lido_new_="sre_a>)L"line" name="L400"5 40pas );
),a"e="+code=d_inode" flag>eq_putc=d_inodeflag>rop_,L39seq_file)
namepin>m19smc>192="L400"5 400<59>     e.c#L457Ue="+code=d_inode" T c_flag>eq_putc=d_inodem="sflag>_a>), charwn>
9a hre92ss="s54" eq_putc=d_inode54" rop_,      n>
9a hre92ss="sdata=mnt_drop_w9ite"ataasss)ORT_SYMBOL>moun);
192smclamnt<19e=m>192t" class="sre"line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="
9a hre92ss="s" cYMBOLclass="sref">mnEXPORT_SYMBOL>moun);
19ne">192s="sref">mnEXUe="+code=d_inode" err);
192espac58"5id="L400"5class="line"1926a hre9=19n);
192href="+code=bUhre!f="+code=__m5vftyped95 call="line"type_a>))ORT_SYMBOL>moun);
    9ss="comme1900<>192drop_write(_l5id="L400"5class="line" nam1928a hre9=19ment"> * @mnt: th9 moun919men>192comme58"5id="L400"5class="line"1929a hre9=199ss="comment"> *
199ss>1923mnt->+ivenro84pens,35"> 4r L4fwehneed capabilities... *54" id="L39seq_file)
 * Tells th9 l19"co>193" class="ss="Uhre!f="+code=__m5vfcapablm);
{
);
193="L400"5 400<59>      N;193smclaORT_SYMBOL>moun);
nameunp19ins>193<58>br_write_lock(_ll=    9a href="+codo_kern_="sref">mnt_a>)s="lido_kern_="sre_a>)L>
9a hre92ss="styped95 call="line"type_a>),a+code=d_inode" flag>eq_putc=d_inodeflag>rop_, 88class#endif="54" eq_putc=d_inode54" rop_, >
9a hre92ss="sdata=mnt_drop_w9ite"ataasss)PORT_SYMBOL>moun);
193s="sref">mnEXUhref="+code=__m5vfIS_ERR=mnt_drop_w9iteIS_ERR_a>)L88class#endif="" cYMBOLclass="sref">mnEX)"58"5id="L400"5class="line"19=5a hre9=1954" id="L39nangle>mount<1954">193espace.c#L457" id9"L4 N;)L88class#endif="" cYMBOLclass="sref">mnEX)PORT_SYMBOL>moun);
mnt/a>., ;mnt_a>)agsmnt_a>)agsmnt_a>)s="lido_add_="sre_a>)Lf="+code=__m5vfroass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX),a88class#endif="pas );
eq_putc=d_inodem="sflag>_a>))PORT_SYMBOL>moun);
"r\t\n\\"" c19">&>1938rop_write
puS_a>)L88class#endif="" cYMBOLclass="sref">mnEX)PORT_SYMBOL>moun);
194" class="ss=" N;194smclaORT_SYMBOL>moun);

194t" cl"e="+code=d_inode" finish_automm)L"line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="
9a hre92ss="s"YMBOLclass="srefrop_,b"line" name="L400"5 40pas );
/**
9a hre92ss="sref">br_write_lock(_llsref">mnt_a>)agsmnt_a>)s="line" name="L400"5 400<59>{
mnt/a>., t 19s=">194drop_write 4r L4fThehnew 8m}
1948rop_enro82/9>1943mnt195" class="ss="+code=d_inode" BUG_ON);
)L88class#endif="" cYMBOLclass="sref">mnEX) < 2)PORT_SYMBOL>moun);
195>        8a href="+code=mnt_dec1952a hre9=19roo<_a>)mnEX * also all9ws fi93y" c_sbd95 call="line"" c_sbmnEXlmoun);
mnNULL>mou "19las>195t" class="sres="lf="+code=__m5vf"YMBOLclass="srefrop_ * also all9ws fi93y" c__read95 call="line"" c__rearop_ls=    9a href="+copas );
mou[0]sss="line" na19ion>1954ef="+code=__________ef">mnt_a>)ags
   19 na>195href="+code=b458"5id="L400"5class="line"1957a hre9=19="line" name="L400"5 40019="l>195drop_58"5id="L400"5class="line"1958a hre9=19ame="L400"5 400<59>1958rop_write
9a hre92ss="serr);
mnt_a>)agsmnt_a>)s="lido_add_="sre_a>)Lf="+code=__m5vf" cYMBOLclass="sref">mnEX, 88class#endif="pas );
mnEX * also all9ws fi93y" c_flag>eq_putc=d_inodem="sflag>_a>) |mso all9ws fi93yMNT_SHRINKABLEfs/namespace.c#MNT_SHRINKABLEmnEX)5id="L400"5class="line" nam1959a hre9=19961SY" s="line" name="L419961>1953mnt->Uhre!f="+code=__m5vferr);
196="L40name="L400"5 40faileq_putc=d_inodefail>(_l:id="L400"5class="line" nam1962a hre9=19400<59> 4r L4fremove m from any expiration rter it may be on *54" id="L39seq_file)
/*<9span>96ted from19ent>196t" class="sreUhre!f="+code=__m5vfrter_empte=mnt_drop_w9iterter_empte_a>)L
9a hre93t" cT_SYMBOLclass="sref">mnEX * also all9ws fi93y" c_expired95 call="line"" c_expire4"ss)  is func19how>1964ef="+code=__________ef">mnt_a>)ags)L
9a hre93t" c5vfsmclas_semYMBOLclass="sre5vfsmclas_semmnEX)5id="L400"5class="line" nam1965a hre9=19 9ith w96e=mntrom -- we 19 9i>196espace.c#L457" id9"L4n>
9a hre93t" cbr_writ3_L401"5 401<59>     br_writ3_L401_a>)L
9a hre93t" cLclass="_L401"5 401<59>     Lclass="_L401mnEX)5id="L400"5class="line" nam1966a hre9=19
196href="+code=br_write_f="+code=__m5vfrter_delcinief">mnt_a>)s="lirter_delcinie_a>)L
9a hre93t" cT_SYMBOLclass="sref">mnEX * also all9ws fi93y" c_expired95 call="line"" c_expire4"ss)5id="L400"5class="line" nam1967a hre9=19ally needs to be handled19all>196drop_write
9a hre92ss="sbr_writ3_="L401"5 401<59>     br_writ3_="L401_a>)L
9a hre93t" cLclass="_L401"5 401<59>     Lclass="_L401mnEX)5id="L400"5class="line" nam1968a hre9=199eeing96ass="amespace.c#199ee>1968rop_write
9a hre92ss="sup_writ3fs/namespace.c#up_writ3_a>)L
9a hre93t" c5vfsmclas_semYMBOLclass="sre5vfsmclas_semmnEX)5id="L400"5class="line" nam1969a hre9=19*<9span>97mnt1963mnt->458"5id="L400"5class="line"197 435197" class="ss="+code=d_inode" T cpuSYMBOLclass="sref">puS_a>)L88class#endif=""YMBOLclass="srefrop_)PORT_SYMBOL>moun);
puS_a>)L88class#endif=""YMBOLclass="srefrop_)PORT_SYMBOL>moun);
19774"4i9="L4090 N;
19="L>197nampu href=9ss="comment">      1975a hre9=19       * 8nt_wa87+code#e19   >197e mor* called from the fillL4435"> 435
-> 435
m19+co>197drop_enro82/9>         * 8eཏmme>1978rop_enro82/9>)s>1973mntvfsmount_lock<19ef=>198" cla     so all9ws fi93y" c_sec_expiryd95 call="line"" c_sec_expiry_a>)L"line" name="L400"5 40Lclass="odeEXPORT_SYMBOLclass="
9a hre92ss="s" cYMBOLclass="sref">mnEX, "line" name="L400"5 40rter_headfs/namespace.c#rter_head
9a hre92ss="sexpiry_rter);
mnt_a>195vf>198smclass="sref+code=d_inode" down_writ3fs/namespace.c#down_writ3_a>)L
9a hre93t" c5vfsmclas_semYMBOLclass="sre5vfsmclas_semmnEX)5id="L400"5class="line" nam1983a hre9=19_a>)sLss="line" name="L419_a>>198<58>     br_writ3_L401_a>)L
9a hre93t" cLclass="_L401"5 401<59>     Lclass="_L401mnEX)5id="L400"5class="line" nam1984a hre9=19)b);
      1985a hre9=19s="comment">         * 819s=">198espace.c#L457name="L400"5 40rter_add_taileq_putc=d_inoderter_add_tail_a>)L
9a hre93t" croass="sref">mnt_a>)s="line" name="L400"5 400<59>{
mnEX) * also all9ws fi93y" c_expired95 call="line"" c_expire4"ss,b+code=d_inode" expiry_rter);
198href=ORT_SYMBOL>moun);
mnt_a>)ss=19mcl>198drop_writemnt_a>)ags     br_writ3_="L401_a>)L
9a hre93t" cLclass="_L401"5 401<59>     Lclass="_L401mnEX)5id="L400"5class="line" nam1988a hre9=19"line" name="L410"> 410<19"li>1988rop_write
9a hre92ss="sup_writ3fs/namespace.c#up_writ3_a>)L
9a hre93t" c5vfsmclas_semYMBOLclass="sre5vfsmclas_semmnEX)5id="L400"5class="line" nam1989a hre9=19ef">br_write_lock(as19ef">1983mnt<458"5id="L400"5class="line"199mnt_a>)b199" claf="+code=__m5vfEXPORT_SYMBOseq_putc=d_inodeEXPORT_SYMBOs_a>)L88class#endif="" c_sec_expiryd95 call="line"" c_sec_expiry_a>))5id="L400"5class="line" nam1991a hre9=19tan 4"sress="line" name=19tan>199>        8a href="+code=mnt_dec1992a hre9=19"5 400<58>}
19974"4igivenro84pens,35"> 4r L435"> 435
199ef=6 givenro84pens,35"> 4r s* process ahrter of2expirablmh8m 435
mnt_t_dropmntpu.c#L454"19>mn>1994ef="enro82/9> 435
mnt)
<19 cl>199e mor* called from the fills* here4" id="L39seq_file)
  19" n>199href=enro82/9>
9a hre92ss="s="sreshre9ss="comment">/**>rop__L39seq_file)
1998rop_moun);
/**
9a hre92ss="sref">br_write_lock(_l,an>
9a hre92ss="snexspan88(&amr"5clanex>mnEXPORT_SYMBOL>moun);
)L88class#endif="graveyardfs/namespace.c#graveyard_a>))5id/pre>RT_SYMBOL>moun);
20
1space.c#L457>
9a hre92ss="sLIST_HEADfs/namespace.c#LIST_HEAD_a>)L88class#endif="u="sreshre9ss="commentu">/**>rop__PORT_SYMBOL>moun);
}
20
t" class="sreUhref="+code=__m5vfrter_empte=mnt_drop_w9iterter_empte_a>)L>
9a hre92ss="s="sreshre9ss="comment">/**>rop___L39seq_file)
20
4ef="+code=__________ N;moun);
mnt)
<20
cl>20
espac58"5id="L400"5class="line"20
6a hre9=20
 name="L396"4 396<48>  20
 n>20
href="+code=bassss="sref">mndown_writ3fs/namespace.c#down_writ3_a>)L
9a hre93t" c5vfsmclas_semYMBOLclass="sre5vfsmclas_semmnEX)5id="L400"5class="line" nam20
7a hre9=20
       8a href="+code=m20
  >20
drop_writemnt_a>)ags     br_writ3_L401_a>)L
9a hre93t" cLclass="_L401"5 401<59>     Lclass="_L401mnEX)5id="L400"5class="line" nam20
8a hre9=20
="+code=mnt" class="sre20
=">20
comme58"5id="L400"5class="line"20
9a hre9=20
moun);
 4r L4fex>rae" from thehexpiration rter every Lclass=" that matches"thm35"> 435
 435
mnt_a>)s, 1ss="li20"sr>2051ref=enro82/9> 435
        9         >20574"4igivenro84pens,35"> 4r sssssssss* -hstill "ar1ed  or expiry ("ar1ed on thmhlast >all here; "ar1s are 435
 4r sssssssss*  ro8eared by f">puS()) 435
20   >2054ef="enro82/9>mnt)20t" >205espace.c#L457name="L400"5 40rter_for_each_ 94US_saf3fs/namespace.c#rter_for_each_ 94US_saf3_a>)Lf="+code=__m5vf" cYMBOLclass="sref">mnEX, 88class#endif="nexspan88(&amr"5clanex>mnEX,b+code=d_inode" T"sreshre9ss="comment">/**>rop_,b+code=d_inode" T c_expired95 call="line"" c_expire4"ss) 20ne">205href="+code=br_write_Uhre!f="+code=__m5vfxchgd95 call="line"xchg_a>)L
9a hre93t" cT_SYMBOLclass="sref">mnEX * also all9ws fi93y" c_expiry_"ar1d95 call="line"" c_expiry_"ar1rop_,b1) ||a href="+code5vfsmclass="s2057a hre9=20k);
)Lf="+code=__m5vf" cYMBOLclass="sref">mnEX, 1__L39seq_file)
)++s="line" name="L420d_a>2053mnt->->+code=d_inode" rter_movefs/namespace.c#rter_move_a>)L
9a hre93t" cT_SYMBOLclass="sref">mnEX * also all9ws fi93y" c_expired95 call="line"" c_expire4"ss, 
9a hre93t" cgraveyardfs/namespace.c#graveyard_a>))5id="L400"5class="line" nam202        9="fs/20"5 >20"5mnt->458"5id="L400"5class="line"20"1a hre9=20smclass="sref">namepin>m20smc>20"1space.c#L457whilere!f="+code=__m5vfrter_empte=mnt_drop_w9iterter_empte_a>)L
9a hre93t" cgraveyardfs/namespace.c#graveyard_a>))) 20"smclass="srefr_write_+code=d_inode" ref">br_write_lock(_llsref">mnt_a>)ags)L
9a hre93t" cgraveyardfs/namespace.c#graveyard_a>), "line" name="L400"5 407
/**mnt<20e=m>20"t" class="sres="line"+code=d_inode" touch_m="sns="line"d95 call="line"touch_m="sns="line"_a>)Lf="+code=__m5vf" cYMBOLclass="sref">mnEX * also all9ws fi93y" c_n>eq_putc=d_inodem="sn>rop__5id="L400"5class="line" nam2024a hre9=20ne" name="L400"5 400<59>20ne">20"4ef="+code=__________ef">mnt_a>)ags/**_tree);
/**_tree_a>)Lf="+code=__m5vf" cYMBOLclass="sref">mnEX, 1, 
9a hre93t" cu="sreshre9ss="commentu">/**>rop__PORT_SYMBOL>moun);
20"5mnt->458"5id="L400"5class="line"20"6a hre9=20n);
20"href="+code=bassss="sref">mnbr_writ3_="L401"5 401<59>     br_writ3_="L401_a>)L
9a hre93t" cLclass="_L401"5 401<59>     Lclass="_L401mnEX)5id="L400"5class="line" nam20"7a hre9=2000<59>    9ss="comme2000<>20"drop_writemnt_a>)ags)L
9a hre93t" c5vfsmclas_semYMBOLclass="sre5vfsmclas_semmnEX)5id="L400"5class="line" nam20"8a hre9=20ment"> * @mnt: th9 moun920men>20"comme58"5id="L400"5class="line"2029a hre9=209ss="comment"> *
209ss>20"3mnt->+code=d_inode" releas3_ass="shre9ss="commentreleas3_ass="s_a>)L
9a hre93t" cu="sreshre9ss="commentu">/**>rop__PORT_SYMBOL>moun);
 * Tells th9 l20"co>20"cmnt<458"5id="L400"5class="line"20"1a hre9=20vfsmount_lock);
20">        8a href="+code=mnt_dec20"2a hre9=20"5 400<59>20"2 claf="+code=__m5vfEXPORT_SYMBOs_GPseq_putc=d_inodeEXPORT_SYMBOs_GPs_a>)Lf="+code=__m5vf"ar1s="sres_for_expiryd95 call="line""ar1s="sres_for_expiry_a>)_PORT_SYMBOL>moun);
nameunp20ins>20"3ef="ORT_SYMBOL>moun);
20"4ef="enro82/9> 435
20"e mor* called from the fills* Ripoff of2'select_parevf()'35"> 435
 435
mnt/a>., ; 435
"r\t\n\\"" c20">&>20"8rop_enro82/9>
20_dmnt<96<48> "e="+code=d_inode" select_submm)L"line" name="L400"5 407
/**
9a hre92ss="sparevf=mnt_drop_w9iteparevf_a>), "line" name="L400"5 40rter_headfs/namespace.c#rter_head
9a hre92ss="sgraveyardfs/namespace.c#graveyard_a>))L39seq_file)
204smclass="sref"line" name="L400"5 407
/**
9a hre92ss="sthis_parevf=mnt_drop_w9itethis_parevf>(_llsref">mnt_a>)ags)PORT_SYMBOL>moun);

204t" class="sre"line" name="L400"5 40rter_headfs/namespace.c#rter_head
9a hre92ss="snexspan88(&amr"5clanex>mnEXPORT_SYMBOL>moun);
mnEXUe="+code=d_inode" f>/*dfs/namespace.c#f>/*d>(_llsr05id="L400"5class="line" nam2045a hre9=20r*5" class="line" name="20r*5>204espac58"5id="L400"5class="line"2046a hre9=2039generic_show_options>m2039g>2046 claf="+code=__m5vfrepeaef">mnt_a>)s="linepeae cla:id="L400"5class="line" nam2047a hre9=20s="sref">mnt/a>., t 20s=">204drop_writemnt_a>)agsmnEXlsref">mnt_a>)ags(_l * also all9ws fi93y" c_T"sreshre9ss="comment" c_T"sres>(_l.so all9ws fi93ynexspan88(&amr"5clanex>mnEXPORT_SYMBOL>moun);
}
2048 claf="+code=__m5vfresu" eq_putc=d_inoderesu"  cla:id="L400"5class="line" nam2049a hre9=20411"5 411<59>2043mnt->whilereef">mnt_a>)agsmnEXl!= 
9a hre93t" cthis_parevf=mnt_drop_w9itethis_parevf>(_l * also all9ws fi93y" c_T"sreshre9ss="comment" c_T"sres>(_l) 20"Lef="+code=__________"line" name="L400"5 40rter_headfs/namespace.c#rter_head
9a hre92ss="stmp=mnt_drop_w9itetmpmnEXlsref">mnt_a>)agsmnEXPORT_SYMBOL>moun);
20"="L400"5 400<59>     "line" name="L400"5 407
/**
9a hre92ss="sref">br_write_lock(_llsref">mnt_a>)ags)L>
9a hre92ss="stmp=mnt_drop_w9itetmpmnEX, "line" name="L400"5 407
/**)_PORT_SYMBOL>moun);
)moun);
mnNULL>mou "20las>20"t" class="sres="line"+code=d_inode" nexspan88(&amr"5clanex>mnEXlsref">mnt_a>)agsmnEXPORT_SYMBOL>moun);
mou[0]sss="line" na20ion>20"4ef="+code=__________Uhre!Lf="+code=__m5vf" cYMBOLclass="sref">mnEX * also all9ws fi93y" cYMBOLclass="sref">mnEX.so all9ws fi93y" c_flag>eq_putc=d_inodem="sflag>_a>) 
   20 na>20"href="+code=br_write_fnro82/9> 435
20"8rop_enro82/9>->->Uhre!f="+code=__m5vfrter_empte=mnt_drop_w9iterter_empte_a>)L
9a hre93t" cT_SYMBOLclass="sref">mnEX * also all9ws fi93y" c_T"sreshre9ss="comment" c_T"sres>(_l)) (_llsref">mnt_a>)ags<" cYMBOLclass="sref">mnEXPORT_SYMBOL>moun);
20n="L400"5 400<59>     e.c#L457goto f="+code=__m5vfrepeaef">mnt_a>)s="linepeae claPORT_SYMBOL>moun);
/*<9span>96ted from20ent>20n3ef="ORT_SYMBOL>moun);
is func20how>20n4ef="+code=__________Uhre!f="+code=__m5vfpropagat3_ass="_buse=mnt_drop_w9itepropagat3_ass="_buse_a>)Lf="+code=__m5vf" cYMBOLclass="sref">mnEX, 1__ 20nespace.c#L457" id9"L444444444+code=d_inode" rter_move_taileq_putc=d_inoderter_move_tail_a>)L
9a hre93t" cT_SYMBOLclass="sref">mnEX * also all9ws fi93y" c_expired95 call="line"" c_expire4"ss, n>
9a hre93t" cgraveyardfs/namespace.c#graveyard_a>))5id="L400"5class="line" nam2066a hre9=20
20nhref="+code=br_write_44444444+code=d_inode" f>/*dfs/namespace.c#f>/*d>(_l++5id="L400"5class="line" nam2067a hre9=20ally needs to be handled20all>20ndrop_write20n8rop_write97mnt20n3mnt->+ivenro84pens,35"> 4r L44" id="L39seq_file)
 43520 nrop_enro82/9>20 smclass="srefUhref="+code=__m5vfthis_parevf=mnt_drop_w9itethis_parevf>(_ll!sref">mnt_a>)ags)_ 20 t" class="sres="line"+code=d_inode" nexspan88(&amr"5clanex>mnEXlsref">mnt_a>)ags(_l * also all9ws fi93y" c_childfs/namespace.c#T c_child_a>).so all9ws fi93ynexspan88(&amr"5clanex>mnEXPORT_SYMBOL>moun);

20="L>20 4ef="+code=__________ef">mnt_a>)ags(_llsref">mnt_a>)ags(_l * also all9ws fi93y" c_parevf=mnt_drop_w9ite" c_parevfmnEXPORT_SYMBOL>moun);
20 espace.c#L457" id9"L4goto f="+code=__m5vfresu" eq_putc=d_inoderesu"  claPORT_SYMBOL>moun);
->m20+co>20 drop_write/*dfs/namespace.c#f>/*d>(_lPORT_SYMBOL>moun);
         * 8eཐmme>20 8mnt<458"5id="L400"5class="line"2079a hre9=20>)sLs="line" name="L396"20>)s>20 9ef="ORT_SYMBOL>moun);
vfsmount_lock<20ef=>20efef="enro82/9> 435
20e1ref=enro82/9> 435
mnt_a>205vf>20e74"4igivenro84pens,35"> 4r s*hsubmm 435
)sLss="line" name="L420_a>>20eef=6 givenro84pens,35"> 4r s*35"> 435
);
 435
         * 820s=">20ee mor* called from the fills*54" id="L39seq_file)
20e6mnt<96<48>      so all9ws fi93yshrink_submm)L"line" name="L400"5 407
/**
9a hre92ss="s" cYMBOLclass="sref">mnEX, "line" name="L400"5 40rter_headfs/namespace.c#rter_head
9a hre92ss="su="sreshre9ss="commentu">/**>rop__L39seq_file)
mnt_a>)ss=20mcl>20e7     410<20"li>20e8rop_write
9a hre92ss="sLIST_HEADfs/namespace.c#LIST_HEAD_a>)L88class#endif="graveyardfs/namespace.c#graveyard_a>))5idhref="+code5vfsmclass="s2089a hre9=20ef">br_write_lock(as20ef">20e3mnt->"line" name="L400"5 407
/**
9a hre92ss="srhre9ss="comment">(_lPORT_SYMBOL>moun);
mnt_a>)b20clef="ORT_SYMBOL>moun);
20c1space.c#L457>nro82/9>rae" submm}
20csmclass="srefwhilereef">mnt_a>)ags)L>
9a hre92ss="s" cYMBOLclass="sref">mnEX, 
9a hre93t" cgraveyardfs/namespace.c#graveyard_a>))) 20ct" class="sres="line"whilere!f="+code=__m5vfrter_empte=mnt_drop_w9iterter_empte_a>)L
9a hre93t" cgraveyardfs/namespace.c#graveyard_a>))) mnt_t_dropmntpu.c#L454"20>mn>20c4ef="+code=__________write
9a hre92ss="srhre9ss="comment">(_llsref">mnt_a>)ags)L
9a hre93t" cgraveyardfs/namespace.c#graveyard_a>), "line" name="L400"5 407
/**mnt)
<20 cl>20cespace.c#L457" id9"L444444444+code=__________write
9a hre92ss="sr c_expired95 call="line"" c_expire4"ss)5id="L400"5class="line" nam2096a hre9=20" name="L396"4 396<48>  20" n>20chref="+code=br_write_44444444+code=d_inode" touch_m="sns="line"d95 call="line"touch_m="sns="line"_a>)Lf="+code=__m5vf"hre9ss="comment">(_l * also all9ws fi93y" c_n>eq_putc=d_inodem="sn>rop__5id="L400"5class="line" nam2097a hre9=20        8a href="+code=m20   >20cdrop_write/**_tree);
/**_tree_a>)Lf="+code=__m5vf"hre9ss="comment">(_l, 1, >
9a hre92ss="su="sreshre9ss="commentu">/**>rop__5id="L400"5class="line" nam2098a hre9=20f="+code=mnt" class="sre20f=">20c8rop_writemoun);
210>        8a href="+code=mnt_dec21
2a hre9=21
5 400<58>}
 4r L435"> 435
210ef=6 givenro84pens,35"> 4r s* Some copy_from_user() imple"> 4ations do nota N; 435
2104ef="enro82/9>/**_options() requires that.c#L383" id="L=* Also note, n>
< <21
5a hre9=21
class="sref">mnt)
<21
cl>210e mor* called from the fills* Note that this function differs from copy_from_user() in that it will oopsc#L383" id="L=* Also note, n>
< <21
6a hre9=21
 name="L396"4 396<48>  21
 n>210href=enro82/9>210drop_enro82/9>21
comme96<48> long >
9a hre92ss="sexae"_copy_from_userhre9ss="commentexae"_copy_from_user_a>)L     n>
9a hre92ss="stod95 call="line"to>(_l, const      so all9ws fi93y__userhre9ss="comment__user_a>)s* +code=d_inode" fromfs/namespace.c#frommnt_a>)s, 1ss="li21"sr>2111space.c#L457charwn>
9a hre92ss="sf=mnt_drop_w9itet>(_llsref">mnt_a>)ags(_l5id="L400"5class="line" nam2112a hre9=21>        9         >211smclass="srefconst charwso all9ws fi93y__userhre9ss="comment__user_a>)s*+code=d_inode" ffs/namespace.c#f>(_llsref">mnt_a>)agsmnt_a>)ags21   >211nampu href=9ss="comment">      2115a hre9=21t" class="sref">mnt)21t" >215espace.c#L457Uhre!f="+code=__m5vfaccess_o1"5 401<59>     access_o1_a>)Lf="+code=__m5vfVERIFY_READfs/namespace.c#VERIFY_READ4"ss, n>
9a hre93t" cfromfs/namespace.c#from
9a hre92ss="snpan88(&amr"5clanrop___L39seq_file)
21ne">215href="+code=br_write_ N;);
2158rop_writemnt_a>)ags)++s="line" name="L421d_a>2153mnt->->Uhref="+code=__m5vf__get_userhre9ss="comment__get_user_a>)Lf="+code=__m5vfcfs/namespace.c#c
9a hre93t" cffs/namespace.c#f>(_l))         9="fs/21"5 >2129rop_write)Lf="+code=__m5vff=mnt_drop_w9itet>(_l, 0, >
9a hre92ss="snpan88(&amr"5clanrop__5id="L400"5class="line" nam21"1a hre9=21smclass="sref">namepin>m21smc>212="L400"5 400<59>     e.c#L457break5id="L400"5class="line" nam21"2a hre9=21ode=mnt_dec_wr9ters"92 c21ode>21"smclass="srefr_write_458"5id="L400"5class="line"2123a hre9=21e=mnt" class="sref">mnt<21e=m>21"t" class="sres="line"n>
9a hre92ss="sf=mnt_drop_w9itet>(_l++lsref">mnt_a>)ags21ne">21"4ef="+code=__________ef">mnt_a>)ags(_l++5id="L400"5class="line" nam2125a hre9=2154" id="L396"4clas MNT_W2154">212espace.c#L457" id9"L4>
9a hre92ss="snpan88(&amr"5clanrop_--5id="L400"5class="line" nam2126a hre9=21n);
212href="+code=b458"5id="L400"5class="line"21"7a hre9=2100<59>    9ss="comme2100<>212drop_write * @mnt: th9 moun921men>2128mnt<458"5id="L400"5class="line"2129a hre9=219ss="comment"> *
219ss>2129ef="ORT_SYMBOL>moun);
 * Tells th9 l21"co>21"cmnt/**_optionsfs/namespace.c#copy_">/**_options_a>)Lconst      so all9ws fi93y__userhre9ss="comment__user_a>)s* +code=d_inode" datahre9ss="commentdata>(_l, unsigned long n>
9a hre92ss="swherehre9ss="commentwhere4"p__L39seq_file)
);
213>    213smclass="srefUe="+code=d_inode" ihre9ss="commentirop_5id="L400"5class="line" nam2133a hre9=21insmclass="sref">nameunp21ins>213t" class="sreunsigned long >
9a hre92ss="spagehre9ss="commentpagerop_5id="L400"5class="line" nam2134a hre9=21code=mnt_drop_writ9" cla21cod>2134" class="sreunsigned long >
9a hre92ss="ssizehre9ss="commentsizerop_5id="L400"5class="line" nam2135a hre9=2154" id="L39nangle>mount<2154">213espac58"5id="L400"5class="line"21"6a hre9=21e)

9a hre92ss="swherehre9ss="commentwhere4"p_lsr05id="L400"5class="line" nam21"7a hre9=21s="sref">mnt/a>., ;(_l_L39seq_file)
"r\t\n\\"" c21">&>2138rop_write
moun);
2140rop_writemnt_a>)ags<__get_free_pagehre9ss="comment__get_free_page_a>)Lf="+code=__m5vfGFP_KERNEseq_putc=d_inodeGFP_KERNEs>(_l))_L39seq_file)
      N;214t" class="sre>nro82/9>mnt/a>., t 21s=">214drop_write}
2148rop_write
9a hre92ss="ssizehre9ss="commentsizerop_lsref">mnt_a>)ags(_l5id="L400"5class="line" nam2149a hre9=21411"5 411<59>2143mnt->Uhref="+code=__m5vfsizehre9ss="commentsizerop_l* alref">mnt_a>)ags(_l_L39seq_file)
21"Lef="+code=__________>
9a hre92ss="ssizehre9ss="commentsizerop_lsref">mnt_a>)ags(_l5id="L400"5class="line" nam2151a hre9=21delisagsoroptionsc#L454"21del>215>        8a href="+code=mnt_dec2152a hre9=21roo<_a>)mnt_a>)ags
9a hre92ss="sexae"_copy_from_userhre9ss="commentexae"_copy_from_user_a>)LL     n)f="+code=__m5vfpagehre9ss="commentpagerop_, >
9a hre92ss="sdatahre9ss="commentdata>(_l, ef">mnt_a>)agsmnNULL>mou "21las>21"t" class="sreUhre!f="+code=__m5vfihre9ss="commentirop_) mou[0]sss="line" na21ion>21"4ef="+code=__________n>
9a hre93t" cfree_pagehre9ss="commentfree_page_a>)Lf="+code=__m5vfpagehre9ss="commentpagerop__5id="L400"5class="line" nam2155a hre9=21="L400"5 400<59>
(_l5id="L400"5class="line" nam2156a hre9=21 name="L400"5 400<59>   21 na>215href="+code=b458"5id="L400"5class="line"2157a hre9=21="line" name="L400"5 40021="l>215drop_writemnt_a>)ags(_l_L39seq_file)
2158rop_write
9a hre92ss="smemse hre9ss="comment"emse _a>)L(charwn)f="+code=__m5vfpagehre9ss="commentpagerop_ +f+code=d_inode" ihre9ss="commentirop_, 0, >
9a hre92ss="sPAGE_SIZEhre9ss="commentPAGE_SIZE>(_ll- >
9a hre92ss="sihre9ss="commentirop_)5id="L400"5class="line" nam2159a hre9=21961SY" s="line" name="L421961>21"3mnt->n>
9a hre92ss="swherehre9ss="commentwhere4"p_lsr>
9a hre92ss="spagehre9ss="commentpagerop_5id="L400"5class="line" nam21621n="L40458"5id="L400"5class="line"21n2a hre9=21400<59>/*<9span>96ted from21ent>21n3ef="Ue="+code=d_inode" copy_">/**_stringd95 call="line"copy_">/**_string_a>)Lconst      so all9ws fi93y__userhre9ss="comment__user_a>)s*>
9a hre92ss="sdatahre9ss="commentdata>(_l, charwnn>
9a hre92ss="swherehre9ss="commentwhere4"p__L39seq_file)
21nespace.c#L457charwn>
9a hre92ss="sfmp=mnt_drop_w9itetmpmnEX5id="L400"5class="line" nam21n6a hre9=21
216href=ORT_SYMBOL>moun);
216drop_write(_l_ 2168rop_write
9a hre92ss="swherehre9ss="commentwhere4"p_lsr>
9a hre92ss="sNULseq_putc=d_inodeNULsmnEX5id="L400"5class="line" nam21n9a hre9=21*<9span>97mnt2163mnt->-> N; 4352175mnt->458"5id="L400"5class="line"2171a hre9=21ystem's .re5id="Lfs 21yst>217>        8a href="+code=mnt_dec2172a hre9=21     * 9um up97 call abo21   >217smclass="sref+code=d_inode" tmp=mnt_drop_w9itetmpmnEXlsref">mnt_a>)ags)Lf="+code=__m5vfdatahre9ss="commentdata>(_l, ef">mnt_a>)ags(_l_5id="L400"5class="line" nam2173a hre9=21ut th97class217t" class="sreUhreef">mnt_a>)ags)Lf="+code=__m5vffmp=mnt_drop_w9itetmpmnEX)_L39seq_file)

21="L>21 4ef="+code=__________ N;217espac58"5id="L400"5class="line"2176a hre9=21nt->
9a hre92ss="swherehre9ss="commentwhere4"p_lsr>
9a hre92ss="sfmp=mnt_drop_w9itetmpmnEX5id="L400"5class="line" nam21 7a hre9=21+code5vfsmclass="sref">m21+co>21 drop_write         * 8eདmme>21 8mnt<458"5id="L400"5class="line"2179a hre9=21>)sLs="line" name="L396"21>)s>21 9ef="ORT_SYMBOL>moun);
vfsmount_lock<21ef=>21efef="enro82/9> 435
21e1ref=enro82/9> is a 32-bit value that allows up to 31 non-fs dependevf flag> ton2144a hre9=21).d_class="line" namee2a hre9=215vfsmclass="sref">mnt_a>215vf>21e74"4igivenro84pens,35"> 4r s*hbe given =o"thm2">/**() >all (ie:a Nad-only, no-dev, no-su   etc).c#L383" id="L=* Also note, n>
< <21e3a hre9=21_a>)sLss="line" name="L421_a>>21eef=6 givenro84pens,35"> 4r s*35"> 435
);
 435
         * 821s=">21ee mor* called from the fills* PAGE_SIZE-1 bytes,awhich co82contain arbitrary fs-dependevf35"> 435
218href=enro82/9>mnt_a>)ss=21mcl>218drop_enro82/9> 410<21"li>2188rop_enro82/9>/**() didv't have o flag> word.c#L383" id="L=* Also note, n>
< <21e9a hre9=21ef">br_write_lock(as21ef">2183mnt word wasfUe=roduced i s"=op half wasfrequiredc#L383" id="L=* Also note, n>
< <219mnt_a>)b219nrop_enro82/9>  alue 0xC0ED, and this remained so /**il 2.4.0-test9.c#L383" id="L=* Also note, n>
< <2191a hre9=21tan 4"sress="line" name=21tan>2191ref=enro82/9> number"is presee=, it corries no informationc#L383" id="L=* Also note, n>
< <2192a hre9=21"5 400<58>}
21974"4igivenro84pens,35"> 4r s* and must be discarded.c#L383" id="L=* Also note, n>
< <2193a hre9=21id8"L39589"fs/ns="line" 21id8>293y" c_flag>eq_putc=d_ino3y     n>
9a hre92ss="stod95 call=m4< <2192a hre9=21"5 400<58>}
 410< do notaode5vfsmclass="s2095a hre9=20 class="sref">mnt)
<20 cl>20cespace.c#L457" i"line)
<20 cl>20cespace.yp_w9ite" c_parevfmnEXPORT_SY RA"5class="line" nam2142a hre9=21k5 S9=21e" PTR_ERRYe filline" name="L420961>20"6|of2% class=21/sp>214t"d_ino5ypvfpagehre9ss="comment5ypvfpage% }
 410< do notaode* called fid9"L444444444+code=_____1____w1ite
9a hre92ss="sr csizerop_5id="L400"5class="lins fi93yMNT_SHRINKABLnamespace, nst      so all9ws fire ufpagehre9ss="commentre ufpageoptions(), n>is func21how>21n4ef=="+code=br1write_44444444+code=d_ino1e" to1ch_m="ass="amespace.c#219ee>2168rop_write21 8mnt_write/**_strinmmeestam216mnt/a>., ;/**_strinll9ws fi93yMNT_SHRINKABLEfs/namespace.ef">mnt/a>., ;20c1sp2     8a hr2f="+code=mnt_dec21
2a hre2=21
520bmm}
 410< do notao2igivenro842ens,35"> 4r L435"> 435is func21how>21n4ef2 givenro842ens,35"> 4r s* Some copy_2rom_u20mr"5clanex>mnEXlsref">mnt_a>)agsmnt/a>., ;mnt)21t" >215esp2r* called 2rom the fills* Note that 2his f205mm}
 410< do notao2i6 called 2rrite_44444444+code=d_ino2es"of20 needs to be handled21all>216dro2_enro82/9>2span cl9ss"fs*54" id="L392eq_fi20mentdata>(_l_ mnt_a>)ags(_ll- >
9a hre92ss="sihre9ss="commentirop_)5id="L405s
21="L>21 4ef2e96<48> lo2g >
9a hre92ss="sexae"_co2y_fro20ine" nam2139a hre9=21span>
mnt/a>., ;vfsmount_lock<21ef=>21efef2=mnt/a>., ;/*<9span>96ted from21ent>21n3ef2ce.c#L457c2arwef">mnt_a>)ags
get  etc).c#L9ss="c5 400<58>}
 410< do notao2u href=9ss2"comment">      2115a hre2=21t"21RRhre9ss="comopy_">/**_strinmmeestam216/**_strinkern_patham216mnt_a>)ags)ags217esp2ce.c#L457U2re!f="+code=__m5vfaccess_21"5 421<59>     access_oopy_">/**_strinmmeestam216is func21how>21n4ef2c6 called 2write_ N;217esp2cenro82/9>200"5class="line"2118a hre2=2100259 id="L3749 class="l2100<>2158ro2_writemnt_a>)agsmnt_a>)ags/**_strinsecurity_sb57" i"line)
<20 cl>20security_sb57" i" ef">mnt_a>)ags), "line" napatham216 410< do notao2-><2>->Uhref="+code=__m5vf2_get_2serhre9ss="comment__geeeeeeeeeeeeeeeeeeee1/sp>214t"d_ino5ypvfpagehre9ss="comment5ypvfpage% L400"5class="lins fi93yMNT_SHRINKABLnamespace, de=d_inode" ihrre ufpagehre9ss="commentre ufpageoptio 8nt_wa87+code#e21   >217esp2_writeis func21how>21n4ef200"5 400<52>     e.c#L457break5id="L200"5c2ass="line" nam21"2a hrclaPORT_SYMBOL>moun)dput_ou"line)
<20 cl>20cput_ou"s="s 8nt_wa87+code#e21   >217esp2ass="srefr2write_458"5id="L400"5clas2="lin22>/*<9span>96ted from21ent>21n3ef2lass="sres2"line"n>
9a hre92ss="sf=m2t_dro22re that *some* data a" the"address theDe#L383ed srelatime unl4a hoverridenc5 400<58>}
 410< do notao2"+code=___2______ef">mnt_a>)ags(_l++5ilsref">mnt_a>)ags<__gs fi93yMNT_SHRINKABLnamespace.c#MNT_SHRINKABLEmnEX))S_NOATIMhre9ss="commenti)S_NOATIMh"L405s
21="L>21 4ef2ce.c#L457"2id9"L4>
9a hre92ss="snpan28(&am2"5clanrop_--5id="L400"5class="line" nll9ws fi93yMNT_SHRINKABLEfs/namespace.|400"5class="line")NT_RELATIMhre9ss="commenti)NT_RELATIMhs="s 8nt_wa87+code#e21   >217esp2a6 called 28"5id="L400"5class="line"21"7a 22 needs to be handled21all>216dro2_write 410< do notao2"write/**_optio2sfs/n23mmentpagerop_lsre   so all9ws fis fi93yMNT_SHRINKABLnamespace.c#MNT_SHRINKABLEmnEX))S_NODEVromfs/namespace)S_NODEVs="sons(), n>is func21how>21n4ef2 (_ll!sref"s fi93yMNT_SHRINKABLnamespace.c#MNT_SHRINKABLEmnEX))S_NOEXECromfs/namespace)S_NOEXECs="sons(), n>is func21how>21n4ef2 ass="sres2signed long >
9a hre92ss=2spage23mr"5clanex>mnEXlsref">mnt_a>)ags217esp2217esp2<6 called 2
9a hre92ss="swherehre9ss2"comm2ntwhere4"p_lsrlsre   so all9ws fis fi93yMNT_SHRINKABLnamespace.c#MNT_SHRINKABLEmnEX))S_NODIRATIMhre9ss="commenti)S_NODIRATIMh"L4058nt_wa87+code#e21   >217esp2217esp2217esp2-><2>moun);
217esp2_write217esp200"5 400<52>      N;217esp2aORT_SYMBO2>moun);

214t" 2lass="sre>2ro82/9>)ags214t" 2l+code=___2span cl9ss"fsssssssss* ga2e"us 249ss="comment">(_llsref">SHRINKABLEmnEX))S_NOATIMhre9ss="commenti)S_NOATIMh"L40 |00"5class="line")S_NODIRATIMhre9ss="commenti)S_NODIRATIMh"L40 |00"5class="line")S_RELATIMhre9ss="commenti)S_RELATIMhs="s|00"5class="line")S_9=21MOUN" nam2156a hre9=)S_9=21MOUN"s="s | href=6" class=21/sp>214t" 2le.c#L457"2rom the fillsssssssss* th2"rema24te
9a hre92ss="sr c_SHRINKABLEmnEX))S_STRICTATIMhre9ss="commenti)S_STRICTATIMh"L405 8nt_wa87+code#e21   >217esp2a6 called 2span cl9ss"fsssssssss*54"2id="L24 needs to be handled21all>216dro2_writemnt_a>)ags217esp20write)L(charwn)f="+codemmeestam216/**_strindo_re7" i"line)
<20 cl>20cesre7" i" ef">eyard_a>), "line" napatham216)ags)_PORT_SYMBOL>mos fi93yMNT_SHRINKABLEfs/namespace }
 410< do notao2->U2ref="+code=__m5vfsizehre92s="co24erhre9ss="comment__geeeeeeeeeeeeeeeeeeee de=d_inode" ihrre ufpagehre9ss="commentre ufpageoptio 8nt_wa87+code#e21   >217esp2"+code=___2______>
9a hre92ss="ssize2re9ss2"commentsizeroelse>mnt_a>)ags217esp2     8a hr2f="+code=mnt_dec2152a hre2=21ro25EMeq_putc=d_inodeENOM5class="line" nmmeestam216/**_strindo_loopbacIFY_READfs/namesdo_loopbacI ef">eyard_a>), "line" napatham216)ags)agsmnt_aelse>mnt_a>)ags
21="L>21 4ef2lass="sreU2re!f="+code=__m5vfihre9ss2"comm25mr"5clanex>mnEXlsref">mnt_a>)ags/**_strindo_change_5ypvFY_READfs/namesdo_change_5ypv ef">eyard_a>), "line" napatham216)ags217esp2"+code=___2______n>
9a hre93t" cfree2pageh2e9ss="commentfelse>mnt_a>)ags217esp2 e.c#L457"2id9"L4 N;mnt_a>)ags/**_strindo_"sref7" i"line)
<20 cl>20cesparef7" i" ef">eyard_a>), "line" napatham216)ags217esp2"6 called 28"5id="L400"5class="line"2157a 2re9=21="line" else8nt_wa87+code#e21   >217esp2"write/**_strindo_newf7" i"line)
<20 cl>20cesnewf7" i" ef">eyard_a>), "line" napatham216)agsmos fi93yMNT_SHRINKABLEfs/namespace }
 410< do notao2_write
9a hre92ss="smems2 hre92s="comment"emse _a>)L(geeeeeeeeeeeeeeeeeeee de=d_inode" ihrrSY RA"5class="line" nam2142a hre9=21a>)ags->U2
9a hre92ss="swherehre9ss2"comm2ntwherRT_SYMBOL>moun)dput_ou"line)
<20 cl>20cput_ou"s="s:8nt_wa87+code#e21   >217esp2_write), "line" napath_pu"line)
<20 cl>20path_pu" ef">eyard_a>), "line" napatham216217esp20458"5id="2400"5class="line"21n2a hr29=21426EMeq_putc=d_iL400"5class="line" nammmeestam216217esp2aORT_SYMBO2>moun);
/*<9ine" name="L396"21>)s>21 9ef2"Ue="+code2d_inode" copy_">/**_strin2d95 c2ll="line" name="L396"21>)s>21 9ef2"+code=___2code5vfsmclass="s2165a hr29=21 2ith w9re9ss="/sp,a href="+code5vfsmc>)Lf="+code=__m5vf"hre9ss="t">(_l * also all     so all9ws fihre9c_="line" nam2097a hre9hre9c_="line ef">nst 58nt_wa87+code#e21   >217esp2ce.c#L457c2arwn>
9a hre92ss="sfmp=mn2_drop2w9itetass="amespace.c#219ee>2168ro2=ORT_SYMBO2>moun);
(_l * also all     so all9ws finewfne" nam2097a hre9newfnes="s 8nt_wa87+code#e21   >217esp2awrite2158ro2_write
9a hre92ss="swhe2ehre926izerop_lsref">mnt_a>)ags/**_strinkmhre9c" nam2097a hre9kmhre9c ef">1lasof
9a hre92ss="s" c>)Lf="+code=__m5vf"hre9ss="t">(_l * also all)21a>)agsid="L400"5class="line" nam2142a hre9=21k5 400<5f 8nt_wa87+code#e21   >217esp2     8a hr2f="+code=mnt_dec2172a hre2=21  271zerop_lsref">mnt_a>)agseyard_a>), "line" nanewfne" nam2097a hre9newfnes="sop__5id="L400"5classc" i"line)
<20 cl>20c class="s 1f 8nt_wa87+code#e21   >217esp2 ORT_SYMBO2ode=d_inode" tmp=mnt_drop2w9ite2mpmnEXlsref">mnt_a>)ags20roo"s="srefopy_">/**_strine" nam21n9a hre9=21*<9span>97mnt2163mn2lass="sreU2reef">mnt_a>)ags)agseyard_a>), "line" nanewfne" nam2097a hre9newfnes="sop__5id="L400"5classrdfs" nam2097a hre9rdfs00<5f 8nt_wa87+code#e21   >217esp2 +code=___2______ N;/**_strininit_waitqueue"su="sreshre9ss="cominit_waitqueue"su=" ef">eyard_a>), "line" nanewfne" nam2097a hre9newfnes="sop__5id="L400"5classpoltam216217esp2 e.c#L457c200"5class="line"2176a hre2=21nt275mnEXlsref">mnt_a>)ags20evei"s="sref">mnt/a>., ;)s>21 9ef2<458"5id="2400"5class="line"2179a hr29=21>2sLs="lne" name="L396"21>)s>21 9ef2->U2>moun);
21e1re2"enro82/9>2span cl9ss"fL435"> 4352"21e5a hre9
populat**6a hrthref9sef="+c8>21e1re2"    8a hr2span cl9ss"fs* Flag> is a232-bi2 value that allows up to 31 noncopied293y" 2igivenro842ens,35"> 4r s*hbe given =2"thm22>/**() >all (ie:a Nad-only, no 400<58>}
 410< do notao2 givenro842ens,35"> 4r s*35"> 435)Lf="+code=__m5vf"hre9ss="t">(_l * also all     so all9ws fiata>="line" nam2097a hre9ata>="line ef">1sp,a href="+code5vfsmc>)Lf="+code=__m5vf"hre9ss="t">(_l * also all     so all9ws fi="line" nam2097a hre9=20        }
 410< do notao2"enro82/9>2span cl9ss"fs* data is a 2     289ss="comment">(_llsre1sp,a href="+code5vfsmfs_1sp,a 3yMNT_SHRINKABLns_1sp,a  all     so all9ws fif93yMNT_SHRINKABLnes="s58nt_wa87+code#e21   >217esp2r* called 2rom the fills* PAGE_SIZE-2 byte289itetass="amespace.c#219ee>2168ro2=enro82/9>2span cl9ss"fs* informatio2 (orh28e9=21="line" /sp,a href="+code5vfsmc>)Lf="+code=__m5vf"hre9ss="t">(_l * also all     so all9ws finewfne" nam2097a hre9newfnes="s 8nt_wa87+code#e21   >217esp2_enro82/9>2span cl9ss"fs*c#L383" id=2L=* A28**_tree);
20vfs7" i" all     so all9ws firoo"mi"line)
<20 cl>20roo"mi"s="srefopy_">/**_strine" nam21n9a hre9=21*<9span>,     so all9ws fipwdmi"line)
<20 cl>20pwdmi"s="srefopy_">/**_strine" nam21n9a hre9=21*<9span>97mnt2163mn2_enro82/9>2span cl9ss"fs* Pre-0.97 v2rsion2889=21="line" /sp,a href="+code5vfsmc" i"line)
<20 cl>207" i" all     so all9ws fiam21 7a hre9=21+ppan>,     so all9ws fiqm21 7a hre9=21+qpan>97mnt2163mn2_/a>->U2span cl9ss"fs* Whe hthehf2ag> w2899=21="line" /sp,a href="+code5vfsmc" i"line)
<20 cl>207" i" all     so all9ws fiol"sreshre9ss="comol"s="srefopy_">/**_strin="line" nam2097a hre9=20       op__5id="L400"5classroo"line)
<20 cl>20roo"s="s97mnt2163mn2_enro82/9>2span cl9ss"fs* =o"have th22"ag82909=21="line" /sp,a href="+code5vfsmc" i"line)
<20 cl>207" i" all     so all9ws finew" nam2097a hre9news="s97mnt2163mn2_    8a hr2span cl9ss"fs* Therefore,2Uhrth29 * 9um up97 call abo21   >217smc2igivenro842ens,35"> 4r s* and must b2 disc29pmnEXlsref">mnt_a>)ags/**_strinhre9c_="line" nam2097a hre9hre9c_="line ef">f 8nt_wa87+code#e21   >217esp2_flag>eq_p2tc=d_ino3y     n>
9a hre92ss="s29mmentIS_ERR_a>)Lf="+code=__m5vffmp=mnt_drop_w9itetmpmnEX)_L39seq_file)
m29RRhre9ss="commentPTR_ERR_a>)Lf="+code=__m5vnewfne" nam2097a hre9newfnes="s 8nt_wa87+code#e21   >217esp2e* called 2id9"L444444444+code=_____2____w29a>->mnt_a>)agseyard_a>), "line" nand21nt<>2_se&amr"5clanrop___nd21nt<>2_se&00<5f 8nt_wa87+code#e21   >217esp2_write
ologyno 400<58>}
 410< do notao2_writemnt_a>)ags20c usetree39seq_file)
)ags20mi"s="s.opy_">/**_strin="liroo"line)
<20 cl>20="liroo"s="s21a>)agsmnt_a>)ags2129ro3<458"5id="3400"5class="line"21
1a hr39=21
30commentsizerop_lsref">mnt_a>)agswritvFY_READfs/namesta>writv ef">eyard_a>), "line" nand21nt<>2_se&amr"5clanrop___nd21nt<>2_se&00<5f 8nt_wa87+code#e21   >217esp3     8a hr3f="+code=mnt_dec21
2a hre3=21
530EMeq_putc=d_inodeENOM5class="line" nkfreeline)
<20 cl>20kfree39seq_file)
 4r s* and must b3
mnt="line" nam2097a hre9ata>="line ef">1s1i80< d3+code#9ss="59gned lL3tions(), n>is _wa87+code#e21   >217esp2_wr3EmnEX))S_M3C_MSK3yMNT_SHRINKABL)S_MG3_MSKe30f 8nt_wa87+code#e21   >217esp2 ORT_SYMBO2ode=d_inode" tmp=mnt_drop2w9ite2mpmnEXlsref">mnt_a>)ags207" i"3venro842e"32095a hre9=20 class="s2ni3g 20l30f 8nt_wa87+code#e21   >217esbr1a hr3_ne"5class="line" nmbr1a hr3_ne"59=21
30commentsizerop_lsr383" id=_ne"5class="line" nm383" id=_ne"5amERR_DAS>="line" nam2097a hre9ata>6nro842e"32L444444444+code=_____2__35 40030>), "line" na_add_taie"27re that *some*mnt_a>)agseyard_a>), "line" nanewf20security_sb57" i" efline" /sp,a href="+code5va href=ol"sreshre9ss="c_f">eyard_a>), "line="c_f">eamERR_DAS>="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#e21   >217esbr1a hr3_unne"5class="line" nmbr1a hr3_unne"59=21
30commentsizerop_lsr383" id=_ne"5class="line" nm383" id=_ne"5amERR_DAS>="line" nam2097a hre9ata>8nro842e"32:="L39 hre9tree n>
ology3id="L30aine" name="L396"21>)s>21 9ef2<43="L400"5cl3ss="INVAnam21n9a hre9=21"3NVAne30f 8nt_wa87+co name="L396"21>)s>21 9ef2->U2>moun);
 lo2g"3id="L400"5class="line"2ig3ed20&31span cl8       21e1rrrrrrrrr21s4igiveark2span383" id= hre9=21 * Are9cat**a new 23ll9ws fire3ufpagehre9ss="commentre u3pageo31span cl8       21e1rrrrrrrrrspan cl9ss"fL. re>nons ofl =o"y acoduced a privar39=e9=21 * Are9cat**a new 23lle)
293y"rrrrrrrr 4r s* and must be discarded.c#L383" 3="srefc2ns3 charwso all9ws fi93y_2us3rh21>31589"fs/ns="line" 21id8>293y"rrrrrrrr
get  etc).c#L9ss="35 400358>}
 410< do notaline" /sp,a href="+cone" nam2097a hre9n>20c usetree39seq_file)
<_DAS>="line" nam2097a hre9atard_a>), "l3ine"21
/**_strinll9we clasworef=new" nam2097at9+code5vfsmc" i"line)
<20 cl>207" sNOEXEsue 0x42(_llsreef="enro65"> 4r s* 2095a hre9=20 class="s2ning 20lDIRATsAlso 4a hreab0>)ags20c usetreemmentIS_ERR_a>)Lf="+code=__m5vffmp=mnt_drop_w9itetmpmnEX31n4ef2c6 c3lled 2write_ N;)ags207" sNOEXEsue 0x42/**3strinsecurity_sb57" i"line)
<2changt;U2
9a hre92ss="swhde5vfsmc" i"line)
<2eis _wa87+code#e21   >217es_lsref">mnt_a>)ags<00"5clas2="lin29izerop9 cl>207" sNOEXEsue 0x42->U28"5i"enro65"> 4r s* 2095a hre9=20 cs * also all     so all59gned lL3tions(), n>is _wa87+code#e21   >217es_lsref">mnt_a>)ags<00"5clas2="lin29izeropre9=21+ppan>,     so g"commentirop_l!sreo g"c_f">eamERR_DAS>="line" nalass="s2ning 20lDIRATsAlso 4a hreab0>)ags 4r s* 2095a hre9=20 c9ss="t">(_l * also all     so all9wsgt;U2
9a hre92ss="swhde5vfsmc" i"line)
<2e     e.c#L457break5i3="L203"5c2ass="line"sb57" i"line)
<2changt;U2
9a hre92ss="swhde5vfsmc" i"line)
<2emnt_a>)ags<00"5clas2="lin29izerop9 cl>207" sNOEXEsue 0x42 4r s* 2095a hre9=20 cs * also all     so all59gned lL3tions(), npwrrrrrrmnt_a>)ags<00"5clas2="lin29izeropre9=21+ppan>,     so g"commentirop_l!sreo g"c_f">eamERR_DAS>="line" nalass="s2ning 20lDIRATsAlso 4a hreab0>)ags
geL410"> 410< do notao2"+co3e=___3______ef">mnt_a>)ags 4r s* 2095a hre9=20 csp2_enro82/9>2span cl9ss"fs*c#L383gt;U2
9a hre92ss="swhde5vfsmc" i"line)
<2e
93216 4r s* 4r s* and must b3
31589"fs/ns="line" 21id8>293y"next_"L400"5clas2="lin2next_"L4ine" nkfreeline)
<20pwdmi"line)
<20 cl>20pwne" 21id8>293y"rrrrrrrr 410< do notao3"writ320c usetrext_"L400"5clas2="lin2next_"L4ine" nkfreeline)
<20,a href="+cone" nam20pwne" 21id8>293y" cl>20kfree39seq_file)
is f3nc21how>21n4ef20/a>-><3>moun33ULsmnEX5id="L400"5class="line" nam21n9a h3NOSUIfs="s38nt_wa87+code#e21   >217e3p2mnt_a>)ags217esp3 4r s* and must b2 dis9ss="t">(_l * also all     so allnhre9c_="line" nam2097a hre93(), n>is f3nc21how>21n4ef2 ass="sres3signe33p2_flag>eq_p2tc=d_ino2_readh458"5id="L4_wa87+code#e21   >"L4_waine" nkfreeline)
<209ss="t">(_l * also all     so alln097a hre9news="s0<59>        n3e)

gewa87+code#e21   >217esp2<3code=3__2signed long s* and must b2 dissp2_enro82/9>2span cl9ss"fs*c#Lnhre9c_="line" nam2097a hre93(3ine"21
217esp2"L4_waine" nkfreeline)
<20sp2_enro82/9>2span cl9ss"fs*c#Ln097a hre9news="s0<59>        n7f=ne 4ataode#e21   >217esp2<6 call3d 2
933n);
)Lf="+code=__m5vffmp=mnt_drop_w9itetmpmnEX3nt_wa87+co3e#e21   >217esp2mnt/a>., ;217esp3_writ3)Lf="a href="+code5vfsmc>)Lf="+code=__387+code#e23   >217esp200"5 400<52>  3   N;34     8a hr3f="+code=ma hre9ata>="line ef">1sp,a href="+code5vfsmc>)Lf="+code=__m5vf"hre9ss="t">(_"+cos * also all     "+cos *c#Lnhre9c_="line" nam2097a hre93_inodeENOM3class="line" nll9ws fi93y3NT_SH3INKABLcl>207" sNOEXEsue 0x42217esp2r* called 2rom the fills* PAGE_SIZE-2 byte289ite3enti)S_NOA3IMh"L40 |00"5class="line"3S_NOD34ewfnes="s558nt_wa87+code#e21   >39=21MOUN" 3am2156a hre9=)S_9=21MOUN"3="s |34r1a hr3_ne"59=21
30commentsiBUG_O9ws fi)S_NOSUIfrBUG_O9ine" e9c ef">1lasof)Lf="a hren097a hre9news="s0<59>        57"2rom th3 fillsssssssss* th2"rema23te)Lf="a hren097a hre9news="s0<59>        5de#e21   3 be handled21all>216dro2_3rite<34a hr3_unne"59=21
30commentsizerop), "line" 3apatham216eyard_a>), "line" napathaCLONE_NEWNSesdo_change_5ypCLONE_NEWNS hrennhre9c_="line" nam2097a hre93os fi93yMN3_SHRINKABLEfs/namespace }32 entIS_ERR_a>)Lf="a hre097a hre9news="s0<59>        geoptio 8n3_wa87+code#e21   >217esp23+code352163mn2_enro82/9>2span cl9ss"fs*3">eyard_a>3, "line" napatham216207" i" all     so all9ws finew" nam2097a hre9news 4r s*hbe given =2"thm22>/**() >all (ie:t_wa87+code#e21 entIS_ERR_a>)Lf="a hrefi"line)
<20 cl>207" s * also all     "+cos *c#Ln097a hre9news="s0<59>        ginodeENOM3ace)S_SHAREf"L40 |00"5cla3s="li352a hr29=21426EMeq_putc=d_iL400"53a>)ags/**_strnkfreeline)
<20suc1nPAtll9ws fiqm21 7a hsuc1nPAtlline" nkfreeline)
<20 entIS_ERR_a>)Lf="a hren097a hre9news="s0<59>        espaceo 8n3_wa87+code#e21   >217esp23+code3___2______n>
93y     n>
9a hre92ss="s29mmentIS_ERR_a>)Lf="+code=__m5vffmp=mnt_drop_w9itetmpmnEX3gs/**400"5class="line" nam21n9a h3ef7" i" ef3>eyard_a>), "line" napath3m216<35n);
),3"line" napatham216 410<21"li>2188rop_enro82/9>moadds**a     filesystw" no842e"32:="L39 hre9tree n>
ology3ne" nam2143a hre9=21a>)ags2span s, 0xC=ska hrefsa hrene"5fore9ss"nee0path_pu" 3f">eyard_a>), "line" napa3ham2132"6a hre9=2ss notn task"21e5a hred8"L39589"fs/ns="line" 21id8>293y" 2igivenro842ens,35">create1nPAtll9ws fiqm21 7a hnreate1nPAtlline" formatio2 (orh28e9=21="line" /sp,a href="+code5vfsmc>)Lf="+code=__m5vf"hreEX)_L39seq_file)m*c#Lnhre9c_="line" nam2097a hre9321   >217e3p20458"5id="2400"5class="3ine"236NKABLcl>207" sNOEXEsue 0x422163mn2_    8a hr2span cl9ss"fs* Therefore,2Uhrt321>)s>21 93f2"+code=___2code5vfsmcla3s="s236_2signed long s* e9c ef">1lasofmnt_a>)ags/**_strin cl>207" sNOEXEsue 0x42)Lf="+code=__m5vf"hre3ss="t3616/**_strin="gs<00"5clas2="lin29izeropre9=21+ppan>,     real17esp2"6 called 28"5ireal17esp2trndnewfne" nam2097aEX)_L39seq_file)m*c#Lnan cl9ss"fs* Therefore,2Uhrt32f7" i" ef3ce.c#219ee>2168ro2=ORT_SY3BO2>m36hre92ss="swherehre9ss2"comm2ntwhere4"p_00"5clas2="lin29izeropsAlso 4a hreab0>)ags20c usetreemmentIS_ERR_a>)Lf="+code=__m5vffmp=mnt_drop_w9itetmpmnEX31="line" /3p,a href="+code5vfsmc>)Lf3"+cod36e2ro82/9>1s1i80< d3+code#9ss="59gned lL3tions(), n>is _wa87+code#e21   >217esp2_wr3EmnEX))S_M3C"L400"5clas2="lin29izerop5vffmp=mnt_drop_w9itetmpmnEX37a hre9new3nes="srefopy_">/**_strink3hre9c36/aw2400"5class="line"2129a hr29=2192"line" n00"5clas2="lin2"line" nef">mnt_a>)ags6nro842e"32L444444444+code=_____2__35 40030>so all)21a3)ags"L4_waine" nkfreeline)
<20EX)_L39seq_file)m*c#Lnan cl9ss"fs* Therefore,2Uhrt3code=mnt_d3c2172a hre2=21  271zerop_3sref"3mnt_a>)ags
9a hre92ss="s29mmentIS_ERR_a>)Lf="+code=__m5vffmp=mnt_drop_w9itetmpmnEX3nt_a>)ags<3S_ERRhr29ss="27re that *s3me*mn3_a>)ag400"5class="line" nam21n9a h311>)s>21 93PTR27RRhre9ss="comopy_">/3*_str37ewfnes="s558nt_wa87+code#e21   >3hre9=21pol300<5f 8nt_wa87+code#e21  3>217e3p2 e.ci" all     so all9ws fd>2srygiven =2"thm22>/>2srysrefopy_">/**_strin="glanrosubuser2/annotacross Tglanrosubuserine" formatio2 (orh28e9=21="line" /sp,a href="+code5vfsmc>)Lf="+code=__m5vf"hreEp_00"5clas2="lin29izerop,t;U2st nt_loc)ags20cl>207" sNOEXEsue 0x42/**_strinall     so all9ws fif93yMNT_SHRINKABLnes="s58nt_wa87+code#e21 entIS_ERR_a>)Lf="a hre5vffmp=mnt_drop_w9itetmpmnEX3na hre9new3 nam2ewfne" nam2097a hre93ewfne37e-0.97 v2rsion2889=21="line" /sp,a super_be9ata>7nro842e"32amsuper_be9at="s58nt_wa87+code#e21entIS_ERR_a>)Lf=a hre5vffmp=mnt_drop_w9itetmpmnEX3="l2ne" n232178aine" name="L396"21>)3>21 938
<20 cl>207" i" all     so all9ws fherehre9ss2"comm2ntwherRT_S     so all9ws fherehre9ss2"comm2ntwherRT_S5vffmp=mnt_drop_w9itetmpmnEX3="s58nt_wa3 s"=op ha00<58>mnt_a>)ags entIS_ERR_a>)Lf="a hreL457name="L400"2 40reate1nPAtll9ws fiqm21 7a hnreate1nPAtlline" code=__m5vf"hreEp_00"5clas2="lin29izeropnan cl9ss"fs* Therefore,2Uhrt35vf"hre9ss3"t">(_l * also all     so3all9w3 fiata>="line"oo"line)
<20 cl>20="liroo"s="s21a>)ags)Lf="a hrennhre9c_="line" nam2097a hre930        }3 410< do notao3"enro38_____ef">mnt_a>)ags)Lf="a hren097a hre9news="s0<59>         289ss="co3ment">(_llsre1sp,a href="3code538ref=6" class=21/sp>214t" 2le.c#L3ass="amesp3ce.c#219ee>2168ro2=enro8239>2sp38efline" /sp,a href="+code5vaerof20 needs to beeroRT_SL457name="L400"2 4e5v" theNKABkupwdmi"line)
<20 e5v" theNKABkupine" code=__m5vf"hreEp_00"5clas2="lin29izeropsAlso 4a hreab0>)ags214t" 2le.c#L3a="line" /3l     so all9ws firoo"mi"3ine)
38_tr e*mnt_a>)ags 410< do notao2u href=9ss2"comment">      2115a hre2=21t|10"> 410< do notao2u hAUTOa>)L(charwn)f="+codetao2u hAUTOa>)L("+cod21nt<>217hr" na_add_therehre9ss2"comm2ntwherRT_SYMBOL>moun)dput_ou"line)
<20 3 we21*<9>2363mn2_enro82/9>2span cl9s3"fs* 3re-0.9BOL>moun)dput_ou"line)
<20 39=21="line3 /sp,a href="+code5vfsmc"3i"lin39hre9ss="commentre ufpageoptiouc1nPAtll9ws fiqm21 7a hsuc1nPAtlline" nkfreeline)
<20 entIS_ERR_a>)Lf="a hren097a hre9news="s0<59>        ine)
<20 c3>20roo"s="s97mnt2163mn2_enro82/9>2span cl9ss"fs*3=o"have th32"ag82909=21="line" /sp,a3href=39vfsmclass="s21"2a hr29=21"23ss="erof20 needs to beeroRT_Snhre9c_="line" nam2097a hre9329 * 9um u397 call abo21   >217smc2i3ivenr3842ens,35"> 4ra>)ags->U2>-> N;f 8nt_wa87+code#e21 3 >2173sp2_fl97a hre9news="s0<59>        i        }3e)
 410< do"L=* Also note, n>
< /* trad29=2e5vfsmc>fntference for active sb onen s, 0xC=ska hrefsa hrene"5fore9ss"nee17esp2e5vf3mclas2="s2095a hre9=20 cl3ss="s3ef">m29RRhre9ss="commentPTR_EentIS_ERR_a>)Lf=a hreL457name="L400"2 4herehre9ss2"comm2ntwherRT_S_lsref">mnt_a>)ags<00"5clas2="lin29izeropsAlso 4a hreab0>)ags217hre2="+code=br2wr3te_4439efline" /sp,a href="+code5vaL400"5cint_wa87+code#e21 L400"5cintef">mnt_a>)ags)Lf=a hresAlso 4a hreab0>)agss_activentIS_ERR_a>)Lf=a_activeRT_Sn097a hre9news="s0<59>        i="line" /3se&amr"5clanrop___nd21nt<32_se&30<5f 8nt_wa87+code#e21   >217"L4_wa87+code#e21   >"L4_waine" nkfreeline)
<20serehre9ss2"comm2ntwherRT_S_lsref">mnt_a>)ags<00"5clas2="lin29izeropn097a hre9news="s0<59>        iwe21*<9>23mi"line)
<20 cl>20mi"s="s3opy_"395amERR_DAS>="line" nam2097a hre9ata>8  a pra 32suckern s, 0xC=ska hrefsa hrene"5fore9ss"ne4ommentiCL_4XPIRh00<5f 8nt_wa87+code#421   40hre9ss="commentre ufpageoptiRR_a>)Lf="+code=__m5vnewfne" nam2097a hre9newfnes="s 8nt_wa8entIS_ERR_a>)Lf=a hresAlso 4a hreab0>)agss_une" /sp,a href="+cods_une" /eropn097a hre9news="s0<59>       49="fs/21"54>2129ro3<458"5id="3400"5c4ass="4ine"21
1a hr39line" nam2097a hre9ata>8 ...22>mont_dec2a 32     o"2asub)tvFY_on2"ag82909=21="line" /sp,a4217es43     8a hr3f=nt_dec21
2a hre3=21
53serehre9ss2"comm2ntwherRT_S_lsref">mnt_a>)ad>2srygiven =2"thm22>/>2srysref097a hre9news="s0<59>       493"fs/21"54>7 call abo21   >217smc2i4 2   4a hr3f400"5class="line" nam21n9a h4lass="sref4>mnt="l1
2a hre3=21
530XPORT_SYMBO)
<20 cl>20c use0XPORT_SYMBO)ine" code=__m5vf"hreElanrosubuser2/annotacross Tglanrosubuserine"n097a hre9news="s0<59>       495ss="sref4>)
214t" 2le.c#L4eyard_a>),4"line" nanewf20security_s457" i40hre92ss="swherehre9ssnt_locode=__m5vf"hre__useof20 needs to be__useo="s58n1   >217esp2     00"5class="line")S_re9ss="c, " nam2142a hr**_tree);
217e4br1a hr3_unne"5class="lin4" nmb41a hr3cl>207" sNOEXEsue 0x42="ti)N    so all9ws fr"commentirop_l!srrezerop5vffmp=mnt_drop_w9itetmpmnEX4id="L30ain4" name="L396"21>)s>21 9ef4<43="41hre9ss="comment_loc)ags2141rrrr411re9ss="comment_loc)ags21412re9ss="comment_loc)ags 4r" nam2142a hre9=21k5 S9=21e" inode" ihrL>mos fi93yMNT_SHRINKABLEfs5vffmp=mnt_drop_w9itetmpmnEX4iass="sref4 must be discarded.c#L3834 3="s41p2_fl97a hre9news="s0<59>       4e3e)

g4t  etc).c#L9ss="35 4003584}
 410< do notaline" /spr"commentirop_l!srrezeropL457name="L400"2 40u"29glanrostring9ws fiqm21 7a hnu"29glanrostringine" code=__m5vf"hre00"5class="line")S_re9ss="c, e9newfnes="s 8nt_wa8kernel|00"5class="line")S_kernel|00"5eropn097a hre9news="s0<59>       4l3ine"21
<4 29entsizerop_l*ne"copy_"4/**_s4rinll9we clasw s* and must b2 dis9"commentirop_l!srrezeropL< 0nhre9c_="line" nam2097a hre9457f=ne 4at4 is a 2     289ss="commen4">(_l4sreef="enro65"> 4r s* gotowne" 21id8>293y"rut|00"5class="line")S_rut|00"5LEfs5vffmp=mnt_drop_w9itetmpmnEX4i1   >217e4lled 2write_ N;/**4strinsecurity_)ags-&goo"line)
<20 cl>20="liroo"s="s21a>)ags207" sNOEXEsue 0x42293y"rut|1irclass="line")S_rut|1irLEfs5vffmp=mnt_drop_w9itetmpmnEX44ef200"5 440<52>     e.c#L457break5i4="L204"5c2ass="line"400"5class="line" nam21n9a h42 4r s* an4te_458"5id="L400"5clas2="4in22>42p2_fl97a hre9news="s0<59>       4L3e)

g4L410"> 410< do notao2"+co4e=___42L410"> 410< do notaline" /spr"commentirop_l!srrezeropL457name="L400"2 40u"29glanrostring9ws fiqm21 7a hnu"29glanrostringine" code=__m5vf"hre8a hr2f="+code=mnt_dec2152a hre2=21roe9newfnes="s 8nt_wa8kernel|1evclass="line")S_kernel|1everopi097a hre9news="s0<59>       423ine"21
<4="L>21 4ef2ce.c#L457"2id94L4>
942inll9we clasw s* and must b2 dis9"commentirop_l!srrezeropL< 0nhre9c_="line" nam2097a hre9447f=ne 4at4class="line" nll9ws fi93y4NT_SH42reef="enro65"> 4r s* gotowne" 21id8>293y"rut|1evclass="line")S_rut|1evLEfs5vffmp=mnt_drop_w9itetmpmnEX441   >217e48"5id="L400"5class="line"41"7a 42a hr3_unne"59=21
30commentsizero4Llsr383" i4 410< do notao4"writ42trinsecurity_)agsmos fi93yMNT_SHRINKABLEfs/namespace }
 410<4(), n>is f4nc21how>21n4ef20/a>-><4>moun4317esp2_/a>-&goo"line)
<20 cl>20=9"commentirop_l!srrezeropL< 0nhre9c_="line" nam2097a hre94NOSUIfs="s48nt_wa87+code#e21   >217e4p2293y"rut|1ata"+code=mnt_dec2rut|1ataLEfs5vffmp=mnt_drop_w9itetmpmnEX4ns(), n>is4func21how>21n4ef2 217esp4mnt_a>)agsr"commentirop_l!srrezeropL457name="L400"2 4NKABLmespace.c#MNT_SHRINKABLsp2trndnewfne" nam2097akernel|1evclass="line")S_kernel|1everop1   >217esp2     kernel|1irclass="line")S_kernel|1irerop1   >217esp2     kernel|00"5class="line")S_kernel|00"5erop**_tree);
21n4ef2 ass="sres4signe43p2_flag>eq_p2tc=d_ino_stri *)e9=21k5 S9=21e" inode" ihrL>mos fi93yMNT_SHRINKABLEfs/namespace }
 410<4(3e)

g4wa87+code#e21   >217esp2<4code=43ewfnes="s558nt_wa87+code#e21   >4(3ine"21
<421   >217esp2m29RRhre9ss="commentPTR_E>wrie" ihrL>mos fi93yMNT>wrie" ihine" code=__m5vf"hre8atae" ihrL>mos fi93yMNT_SHRINKABLEfs/namespace }
 410<4(7f=ne 4at4ode#e21   >217esp2<6 call4d 2
943n);
293y"rut|1ata"+code=mnt_dec2rut|1ataLEfsd_inode" ihrrSY RA"5class="l4ode#e21   4217esp2mnt_a>)agswritvFY_READfs/namesta>kernel|1evclass="line")S_kernel|1everopi097a hre9news="s0<59>       4nt_wa87+co4e#e21   >217esp2217esp4_writ4293y"rut|1irclass="line")S_rut|1irLEfsd_inode" ihrrSY RA"5class="l4es(), n>is4   >217esp200"5 400<52>  4   N;44code5vfsmc" i"line)
<20 cl>2ref">mnt_a>)agswritvFY_READfs/namesta>kernel|00"5class="line")S_kernel|00"5eropn097a hre9news="s0<59>       4_inodeENOM4class="line" nll9ws fi93y4NT_SH4INKABLne" 21id8>293y"rut|00"5class="line")S_rut|00"5LEfsd_inode" ihrrSY RA"5class="l4e 4r s* an4ECromfs/namespace)S_NOEXE4s="s 400"5class="lin214t" 2le.c#L457"2rom th4 fillsssssssss* th2"rema24te8nro842e"32:="L39 hre9tree n>
ology45de#e21   4 be handled21all>216dro2_4rite<443" id="L=* Also note, n>
<  * Rt_dec2aruegoo"wherrivareachableL435">s="s"5o842e"32:="L39 hre9tree n>
ology45t_wa87+co4apatham216 410<21"li>2188rop_enro82/9>"5o842e"32:="L39 hre9tree n>
ology4os fi93yMN4_SHRINKABLEfs/namespace }4
new" or r"5clanrop___rivahetacro842e"32:="L39 hre9tree n>
ology4oMhs="so 84_wa87+code#e21   >217esp24+code452100<>21e1re2"enro82/9>2span s, 0xC=ska hrefsa hrene"5fore9ss"ne4">eyard_a>4, "line" napatham216/**_strin="gs<00"5clas2="lin29izerop96MNT_SHRINKABLns_1sp,a d>2srygiven =2"thm22>/>2srysrefopy_">/**_strin="d>2srygiven =2"thm22>/>2srysref6 all9ws f293yEN2MEMeq_putc=4ginodeENOM4ace)S_SHAREf"L40 |00"5cla4s="li455c2ass="line"sb57" i"line)
<2t;U2st i" all     so all9ws fherehre9ss2"comm2ntwherRT_S py_">/**_strin=">is _wa87+code#e21   >217esnhre9c_="line" nam2097a hre94a>)ags207" sNOEXEsue 0x42217esp24+code4___2______n>
9oref=ne1nt<>217hr" na_add_t"p_00"5clas2="lin29izeropsAlso 4a hreab0>)ags,     ris _wa87+code#e21   >217essAlso 4a hreab0>)agsd_a>), "line" napatha9newhav" trfne" nam2097a hre99newhav" trfneine" code=__m5vf"hreEs<00"5clas2="lin29izeropnn cl>207" sNOEXEsue 0x422srygiven =2"thm22>/>2srysrefo2_wr3EmnEX))S_M3C"L400"5clas2="lin29izeropsAlso 4a hreab0>)agseyard_a>), "line" napath4m216<45hre92ss="swherehre9ss2"comm2ntwhere4"p_00"5clas2="lin29izeropo2_wr3EmnEX))S_M3C"L400"5clas2="lin29izeropsAlso 4a hreab0>)ags
9a hre924s="sm45trinsecurity_217hr" na_add_t"p_00"5clas2="lin29izeropsAlso 4a hreab0>)ags217essAlso 4a hreab0>)agsd_a>), "line" napathaiv"sub1irclass="line")S_iv"sub1irine" code=__m5vf"hre8a2srygiven =2"thm22>/>2srysref6; from tDhre9=2iris _wa87+code#e21   >217essAlso 4a hreab0>)ags8a2srygiven =2"thm22>/>2srysrefn097a hre9news="s0<59>       4ne" nam2144a hre9=21a>)agseyard_a>), "line" napa4ham214/**_strin="wher1hre9ss2"comm2ntwher1erop96MNT_SHRINKABLns_1sp,a herehre9ss2"comm2ntwherRT_S py_">/**_strin="wher2hre9ss2"comm2ntwher217esnhre9c_="line" nam2097a hre9421   >217e4p20458"5id="2400"5class="4ine"246NKABLcl>207" sNOEXEsue 0x42)s>21 94f2"+code=___2code5vfsmcla4s="s246L410"> 410< do notaline" /spbrNreadnewfne" nam2097a hre9nlreadnewfntvFY_amERR_DAS>="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#4f="+code5v4smc>)Lf="+code=__m5vf"hre4ss="t46f">m29RRhre9ss="commentPTR_Er"5class="line" nmr"5ine"o2_wr3EmnEX))S_M3Civ" theNreachable id=_ne"5class=iv" theNreachabletvFY_s="commentPTR_Er"al17esp2"6 called 28"5ireal17esp2trndnewfne" nam2097awher1hre9ss2"comm2ntwher1eropsAlso 4a hreab0>)ags)ags8a2srygiven =2"thm22>/>2srysref6; from tDhre9=2iwher2hre9ss2"comm2ntwher217esnt<>23of20 3eeds to be hande#4ff7" i" ef4ce.c#219ee>2168ro2=ORT_SY4BO2>m46efline" /sp,a href="+code5va hrreadnsreshre9ss="c_f">eyard_areadnsreshrtvFY_amERR_DAS>="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#4fde#e21   4p,a href="+code5vfsmc>)Lf4"+cod465vfdatahre2ss3y     n>
9a hre92ss="r"5class="line" nmr"5ine"5vffmp=mnt_drop_w9itetmpmnEX42o notao2_4nes="srefopy_">/**_strink4hre9c46 N;20c use0XPORT_SYMBO)ine" code=__m5vf"hre theNiv"undeof20 needs to be theNiv"undeotvFYnt<>23of20 3eeds to be hande#4="s58nt_wa47+code#e21   >217esp24>4472163mn2_enro82/9>2span cl9ss"fs*4code=mnt_d4c2172a hre2=21  271zerop_4sref"47rrrrrrrrr>8nro842e"32:="L39 hre9tree n>
ology417esp2 ORT4SYMBO2ode=d_inode" tmp=mn4_drop47="line" 21id8>293y"rrrrrrrr<* pivoews="s Semantics:nro842e"32:="L39 hre9tree n>
ology41ass="line4S_ERRhr29ss="27re that *s4me*mn4_a>)age" 21id8>293y"rrrrrrrr<* Moves2a 32     file systw"mof2a 32currfne process is a 321irectory suc1old,nro842e"32:="L39 hre9tree n>
ology411>)s>21 94PTR27RRhre9ss="comopy_">/4*_str47ewfnee" 21id8>293y"rrrrrrrr<* makes2"+co     as a 324igi     file systw"mof2a 32currfne process,22>mose lo2g"3id="L400"5class="line4hre9=21pol400<5f 8nt_wa87+code#e21  4>217e4p2 e.ce" 21id8>293y"rrrrrrrr<*     /cwdmof2all processes2which had2a 3m_on2a 32currfne      21s4igo    * Are9cat**a new 23lle)
"5o842e"32:="L39 hre9tree n>
ology4=="line" /4o2="+code=bn2
9a hre92ss=4swher473" id="L=* Also note, n>
<  * Rtstrictioll:nro842e"32:="L39 hre9tree n>
ology41o notao2_4 nam2ewfne" nam2097a hre94ewfne47> 410<21"li>2188rop_enro82/9>mo must r39=be_on2a 3nro842e"32:="L39 hre9tree n>
ology4="l2ne" n242178aine" name="L396"21>)4>21 9482<458"5id="2400"5class="line"2s96" file  systw"mas a 32currfne process     *
ology4="s58nt_wa4 s"=op ha00<58>21e1re2"enro82/9>2span  undeoneherr4igo    ,int.e.oaddle<>a r3n-zer1s4umbermof2/.. is a 32stringino842e"32:="L39 hre9tree n>
ology4=ode=mnt_d4*6a hrthref9sef="+c8>s*name="ed is byt_uc1old must yield a 32s96" 1irectory as2"+co    . No oa 3rino842e"32:="L39 hre9tree n>
ology4=7esp2 ORT4lows up to 31 noncopied293y"rrrrrrrr<* file systw"mmay=be_clanred on2_uc1old. Af"er all,24igo     is**aentirop_)5* Are9cat**a new 23lle)
(_l * also all     so4all9w48a>)age" 21id8>293y"rrrrrrrr<* Are9cat**a new 23lle)
)s>21 94 410< do notao4"enro48ewfnee" 21id8>293y"rrrrrrrr<* Also,2a 32currfne      canr39=be_on2a 3 '    fs' (initial ramfs) filesystw"* Are9cat**a new 23lle)
(_llsre1sp,a href="4code5482 e.ce" 21id8>293y"rrrrrrrr<* See Docurrrratiol/filesystw"s/ramfs-    fs-initramfs.txt for al"ernativea 3<48> lo2g"3id="L400"5class="line4ass="amesp4ce.c#219ee>2168ro2=enro8249>2sp48eflinline" nam2097a hre9ata9>nti2a is*situatiol* Are9cat**a new 23lle)
 410<21"li>2188rop_enro82/9>
ology49=21="line4 /sp,a href="+code5vfsmc"4i"lin492<458"5id="2400"5class="line"2 - w" 1on'taenve     /cwdmif2a 3y are r39=at2a 32     (reason:mif2somea ingino842e"32:="L39 hre9tree n>
ology4ine)
<20 c4>20roo"s="s97mnt21e1re2"enro82/9>2span  <2t;acat*enough is change2a 3m, it's probably wroe<>21sforce2a 3mrindow 3re)ino842e"32:="L39 hre9tree n>
ology4iode=mnt_d42"ag82909=21="line" /sp,a4href=49rrrrrrrrrs*n - it's okay=21spick**a     tha  isn'taa 32     o"2a file systw", e.g* Are9cat**a new 23lle)
217smc2i4ivenr49="line" 21id8>293y"rrrrrrrr<*    /na21myo     w 3re /na2 is*a 32fsmc>fop_)5* It must b32*aentirop_)5,nro842e"32:="L39 hre9tree n>
ology4ivf"hre9ss4 ef">f 8nt_wa87+code#e21 4 >21749a>)age" 21id8>293y"rrrrrrrr<*    thoughns ofyoummay=e9=2=21ssay=fsmc>f--bi>mo/na21myo     /na21myo    nro842e"32:="L39 hre9tree n>
ology4i1>)s>21 94e)
293y"rrrrrrrr<*    firs5* Are9cat**a new 23lle)
293y"rrrrrrrr<*s, 0xC=ska hrefsa hrene"5fore9ss"ne4href="+cod41nt<>217hre2="+code=br2wr4te_4449n);
293y"SYSCALL_DEFINE2hre9ss2"comm2ntSYSCALL_DEFINE2ine" code=__m5vf"hre ivoews="sf20 needs to be ivoews="ssref6;;U2st nt_locode=__m5vf"hre__useof20 needs to be__useo="s58n1   >217esp2     4igo    f20 needs to be4igo    sref6 all9ws f293yEN2MEMeq_putc=4i="line" /4se&amr"5clanrop___nd21nt<42_se&49_tr e*mnt_a>)ags20mi"s="s4opy_"495amERcl>207" sNOEXEsue 0x42207" i" all     so all9ws fherehre9ss2"comm2ntwherRT_S     so all9ws f cl>20kfree39seq_file)
293y"rrrrrrrr217est<>23of20 3eeds to be hande#59="fs/21"55>2129ro3<458"5id="3400"5c5ass="5ine"21
1a hr39i" all     so all9ws fiol"sreshre9ss="comol"s="srefopy_">/**_strin="4igo"L400"5clas2="lin2new_9izerop96py_">/**_strin=">is o"L400"5clas2="lin2>is o"L417est<>23of20 3eeds to be hande#592"fs/21"55>"ag82909=21="line" /sp,a5217es53     8a hr3f=ti)N    so all9ws ferooof20 needs to beeroorLEfs5vffmp=mnt_drop_w9itetmpmnEX593"fs/21"55>7 call abo21   >217smc2i5 2   502a hr29=21426EMeq_putc=d_iL400"55lass="sref5>mnt="line"oo"le9c ef">1lasof)
mnt_a>)ags
9a hre92ss="0PERM
<20 cl>20c use0PERMLEfs5vffmp=mnt_drop_w9itetmpmnEX596ss="sref5>clas2="s2095a hre9=20 cl5ne" n50ref=6" class=21/sp>214t" 2le.c#L5eyard_a>),5"line" nanewf20security_s557" i50efline" /sp,a href="+code5vaerooof20 needs to beeroorLEfso2_wr3EmnEX))S_M3Cuseo" theN1irclass="line")S_useo" theN1irine" code=__m5vf"hre4igo    f20 needs to be4igo    sref6i1nt<>217hr" na_add_t cl>20kfree39seq_file)
217e5br1a hr3_unne"5class="lin5" nmb508iata>="line"oo"l href="+code5vaerooof20 needs to beeroorLEfsn29=21426EMeq_putc=d_iL400"55l9   >217e5bi"line)
<20 cl>20mi"s="s5id=_n50/aw2400"5class="line"gotowne" 21id8>293y"rut0rrrrr)s>21 9ef5<43="51ests="sref">mnt/a>., ;2151rrrr51"5id="L400"5class="line"2171erooof20 needs to beeroorLEfso2_wr3EmnEX))S_M3Cuseo" theN1irclass="line")S_useo" theN1irine" code=__m5vf"hre_uc1old"+code=mnt_dec2ouc_otacros6i1nt<>217hr" na_add_trrrrrrrr21512re9ss="commeoo"l href="+code5vaerooof20 needs to beeroorLEfsn29=21426EMeq_putc=d_iL400"55i3"fs/21"55ntirop_)5id="L403"51].31559"fs/515c2ass="line"sb57" i"gotowne" 21id8>293y"rut1hre9ss2"comm2ntrut1LEfs5vffmp=mnt_drop_w9itetmpmnEX5iass="sref5 must be discarded.c#L3835 3="s51p2_fl97a hre9news="s0<59>       5e3e)

g5t  etc).c#L9ss="35 4003585}
 410< do notaline" /sperooof20 needs to beeroorLEfso2_wr3EmnEX))S_M3Csecurity_sb_ ivoe    f20 needs to besecurity_sb_ ivoe    tvFY_amERR_DAS>="line" narrrrrrrr217hr" na_add_t cl>20kfree39seq_file)
),5 is a 2     289ss="commen5">(_l5sreef="enro65"> 4r s* gotowne" 21id8>293y"rut2hre9ss2"comm2ntrut2LEfs5vffmp=mnt_drop_w9itetmpmnEX5i1   >217e5lled 2write_ N;/**5strinsecurity_)ags)agss * also all     fscros6;1nt<>217hr" na_add_t>is _wa87+code#e21   >217esn5vffmp=mnt_drop_w9itetmpmnEX52_get_2ser5re9ss="comment__geeeeeeee5eeeee52hre9ss="commentre ufpageoptierooof20 needs to beeroorLEfso2_wr3EmnEX))S_M3Cp___17esp2"6 called 28"5ip___17esp2tvFY_amERR_DAS>="line" narrrrrrrr293y"rut3hre9ss2"comm2ntrut3LEfs5vffmp=mnt_drop_w9itetmpmnEX54ef200"5 450<52>     e.c#L457break5i5="L20522a hr29=21426EMeq_putc=d_iL400"552 4r s* an5te_458"5id="L400"5clas2="5in22>52opy_">/**_strnkfreeline)
<20erooof20 needs to beeroorLEfso2_-n>
9a hre92ss="0INVA)
<20 cl>20c use0INVA)LEfs5vffmp=mnt_drop_w9itetmpmnEX543e)

g5L410"> 410< do notao2"+co5e=___52L410"> 410< do notaline" /sp4igo"L400"5clas2="lin2new_9izeropre9=21+ppan>,     real17esp2"6 called 28"5ireal17esp2trndnewfne" nam2097a cl>20kfree39seq_file)
mnt_a>)ags<00"5clas2="lin29izeropn097a hre9news="s0<59>       523ine"21
<5="L>21 4ef2ce.c#L457"2id95L4>
952f">m29RRhre9ss="commentPTR_Eris o"L400"5clas2="lin2>is o"L417esre9=21+ppan>,     real17esp2"6 called 28"5ireal17esp2trndnewfne" nam2097a>is _wa87+code#e21   >217es_lsref">mnt_a>)ags<00"5clas2="lin29izeropn097a hre9news="s0<59>       52yard_a>),5class="line" nll9ws fi93y5NT_SH52reef="enro65"oo"line)
<20 cl>20="liMNT_SHARED00"5clas2="lin2"liMNT_SHAREDtrndnewfne" nam2097a>eal17esp2"6 called 28"5ireal17esp2trndnewfne" nam2097arrrrrrrrmnt_a>)ags<00"5clas2="lin29izeropn) ||97a hre9news="s0<59>       521   >217e58"5id="L400"5class="line"51"7a 52e2ro82/9> 410< do notao5"writ52/aw2400"5class="line"2129a hr29=2192"liMNT_SHARED00"5clas2="lin2"liMNT_SHAREDtrndnewfne" nam2097a>is o"L400"5clas2="lin2>is o"L417essAlso 4a hreab0>)agsis f5nc21how>21n4ef20/a>-><5>moun532141a hre9=21k for f gotowne" 21id8>293y"rut4hre9ss2"comm2ntrut4LEfs5vffmp=mnt_drop_w9itetmpmnEX5NOSUIfs="s58nt_wa87+code#e21   >217e5p21lasofis o"L400"5clas2="lin2>is o"L417es) || e9c ef">1lasof21n4ef2 293y"rut4hre9ss2"comm2ntrut4LEfs5vffmp=mnt_drop_w9itetmpmnEX5Nef200"5 45t_wa87+code#e21   >217esp5mnt_a>)agserooof20 needs to beeroorLEfso2_-n>
9a hre92ss="0NOEL(charwn)f="+code0NOEL(LEfs5vffmp=mnt_drop_w9itetmpmnEX5N 4r s* an5nc21how>21n4ef2 ass="sres5signe53p2_flag>eq_p2oo"line)
<20 cl>20=dnsreinkerrrrrr20kfree39seq_file)
mnt_a>)a8a2srygiven =2"thm22>/>2srysrefnn29=21426EMeq_putc=d_iL400"55(3e)

g5wa87+code#e21   >217esp2<5code=53_____ef">mnt_a>)ags293y"rut4hre9ss2"comm2ntrut4LEfs5vffmp=mnt_drop_w9itetmpmnEX5N3ine"21
<521   >217esp2mnt_a>)a8a2srygiven =2"thm22>/>2srysrefnn29=21426EMeq_putc=d_iL400"55(yard_a>),5ode#e21   >217esp2<6 call5d 2
953reef="enro65"> 4r s* gotowne" 21id8>293y"rut4hre9ss2"comm2ntrut4LEfs5vffmp=mnt_drop_w9itetmpmnEX5N1   >217e5217esp2217esp220kfree39seq_file)
mnt_a>)ags<00"5clas2="lin29izerop 39; from tDhre9=2iris _wa87+code#e21   >217es_lsref">mnt_a>)ags<00"5clas2="lin29izerop ||97a hre9news="s0<59>       5erhre9ss="5omment__ge5class="line" n5l9ws 542141a hre9=21k foewfne" nam2097arrrrrrrrmnt_a>)ags<00"5clas2="lin29izerop 39; from tDhre9=2iris _wa87+code#e21   >217es_lsref">mnt_a>)ags<00"5clas2="lin29izeropn29=21426EMeq_putc=d_iL400"55IMhs="so 85t_wa87+code#e21   >217esp5_writ54commentre ufpageoptiogotowne" 21id8>293y"rut4hre9ss2"comm2ntrut4LEfs5"line" nam2097a hre9ata>8  aop,_on2a 3 s96" file systw"m<*s, 0xC=ska hrefsa hrene"5fore9ss"ne5es(), n>is5   >217esp200"5 400<52>  5   N;54code5vfsmc" i"line)
<20 cl>2erooof20 needs to beeroorLEfso2_-n>
9a hre92ss="0INVA)
<20 cl>20c use0INVA)LEfs5vffmp=mnt_drop_w9itetmpmnEX5_inodeENOM5class="line" nll9ws fi93y5NT_SH543nll9we clasw s* and must b2 disris _wa87+code#e21   >217es_lsref">mnt_a>)ags<00"5clas2="lin29izeropsAlso 4a hreab0>)ags,     ris _wa87+code#e21   >217es_lsref">mnt_a>)a8a2srygiven =2"thm22>/>2srysrefnvffmp=mnt_drop_w9itetmpmnEX5_ 4r s* an5ECromfs/namespace)S_NOEXE5s="s 500"5class="linageoptiogotowne" 21id8>293y"rut4hre9ss2"comm2ntrut4LEfs5"line" nam2097a hre9ata>8 r39=aaentirop_)5<*s, 0xC=ska hrefsa hrene"5fore9ss"ne5e3e)

g5IMh"L40 |00"5class="line"5S_NOD54_2signed long s* e9c ef">1lasofis o"L400"5clas2="lin2>is o"L417es)nvffmp=mnt_drop_w9itetmpmnEX5_3ine"21
<5am2156a hre9=)S_9=21MOUN"5="s |5416293y"rut4hre9ss2"comm2ntrut4LEfs5"line" nam2097a hre9ata>8 r39=attached<*s, 0xC=ska hrefsa hrene"5fore9ss"ne5eyard_a>),5 fillsssssssss* th2"rema25te20= cl>20kfree39seq_file)
mnt_a>)ags<00"5clas2="lin29izeropsAlso 4a hreab0>)ags,      cl>20kfree39seq_file)
mnt_a>)a8a2srygiven =2"thm22>/>2srysrefnka hrefsa hrene"5fore9ss"ne5e1   >217e5 be handled21all>216dro2_5rite<54e2ro82/9>293y"rut4hre9ss2"comm2ntrut4LEfs5"line" nam2097a hre9ata>8 r39=aaentirop_)5<*s, 0xC=ska hrefsa hrene"5fore9ss"ne5elsr383" i5apatham2161lasof293y"rut4hre9ss2"comm2ntrut4LEfs5"line" nam2097a hre9ata>8 r39=attached<*s, 0xC=ska hrefsa hrene"5fore9ss"ne5oMhs="so 85_wa87+code#e21   >217esp25+code55ne"21
1a hr39line" nam2097a hre9ata>8 make sure w" ce" reacht_uc1old 435">4igo     *s, 0xC=ska hrefsa hrene"5fore9ss"ne5os(), n>is5, "line" napatham2161lasofmnt_a>)ags<00"5clas2="lin29izeropnpwne" 21id8>293y"rrrrrrrrmnt_a>)a8a2srygiven =2"thm22>/>2srysref6;1nt<>217hr" na_add_t cl>20kfree39seq_file)
293y"rut4hre9ss2"comm2ntrut4LEfs5vffmp=mnt_drop_w9itetmpmnEX5a>)ags/**_strnkfreeline)
<20brnam209newfne" nam2097a hre9nlam209newfntvFY_amERR_DAS>="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#5espaceo 8n5_wa87+code#e21   >217esp25+code55L410"> 410< do notaline" /spdetacho"L400"5clas2="lin2detacho"L4ine" code=__m5vf"hre4igo"L400"5clas2="lin2new_9izeropd21nt<>217hr" na_add_therfne_herehre9ss2"comm2ntwhrfne_heresrefnt<>23of20 3eeds to be hande#5e3ine"21
<5tam216m29RRhre9ss="commentPTR_Edetacho"L400"5clas2="lin2detacho"L4ine" code=__m5vf"hre>is o"L400"5clas2="lin2>is o"L417es6;1nt<>217hr" na_add_t>is t trfne" nam2097a hre9ris t trfnesrefnt<>23of20 3eeds to be hande#5eyard_a>),5>eyard_a>), "line" napath5m216<55hre92ss="swheline" nam2097a hre9ata>8 msmc>fold      on2_uc1old *s, 0xC=ska hrefsa hrene"5fore9ss"ne5o1   >217e5"line" napatham216217attacho"L400"5clas2="lin2attacho"L4ine" code=__m5vf"hre>is o"L400"5clas2="lin2>is o"L417es6;1nt<>217hr" na_add_trrrrrrrr
9a hre925s="sm555amERR_DAS>="line" nam2097a hre9ata>8 msmc>f4igo     on2/ *s, 0xC=ska hrefsa hrene"5fore9ss"ne5ne" nam2145a hre9=21a>)ags217hr" na_add_t>is t trfne" nam2097a hre9ris t trfnesrefnt<>23of20 3eeds to be hande#5neoptio 8n5"s="s:8nt_wa87+code#e21  5>217e56"5id="L400"5class="line"2171toucho"L4_s to be h" nam2097a hre9toucho"L4_s to be hine" code=__m5vf"hrecurrfne id=_ne"5class=currfneeropsAlso 4a hreab0>)agsnsproxygiven =2"thm22>nsproxyeropsAlso 4a hreab0>)ags23of20 3eeds to be hande#5ns(), n>is5f">eyard_a>), "line" napa5ham2156code5vfsmc" i"line)
<20 cl>29nlam209nsreshre9ss="c_f">eyard_aam209nsreshrtvFY_amERR_DAS>="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#521   >217e5p20458"5id="2400"5class="5ine"2569ite2mpmnEXlsref">mnt_a>)agschris tfso es * also all     chris tfso es tvFY_amERR_DAS>="line" naris _wa87+code#e21   >217es6;1nt<>217hr" na_add_t cl>20kfree39seq_file)
/**_strnkfreeline)
<20erooof20 needs to beeroorLEfso2_0href=newfne" nam2097a hre9ne5lspaceo 8n5f2"+code=___2code5vfsmcla5s="s256L410"ne" 21id8>293y"rut4hre9ss2"comm2ntrut4LEfsd_inode" ihrrSY RA"5class="l5f="+code5v5smc>)Lf="+code=__m5vf"hre5ss="t56f">m29RRhre9ss="commentPTR_Esreshr17esp2"6 called 28"5isreshr17esp2tvFY_amERR_DAS>="line" narrrrrrrr2168ro2=ORT_SY5BO2>m56reef="enro65"oo"le9c ef">1lasof207" sNOEXEsue 0x42 theN_watvFY_amERR_DAS>="line" naris t trfne" nam2097a hre9ris t trfnesrefnt<>23of20 3eeds to be hande#5no notao2_5nes="srefopy_">/**_strink5hre9c56/aw2400"5class="line"2129a hr29=2192 theN_wa87+code#e21   > theN_watvFY_amERR_DAS>="line" naherfne_herehre9ss2"comm2ntwhrfne_heresrefnt<>23of20 3eeds to be hande#5so all)21a5)ags293y"rut3hre9ss2"comm2ntrut3LEfsd_inode" ihrrSY RA"5class="l5code=mnt_d5c2172a hre2=21  271zerop_5sref"57code5vfsmc" i"line)
<20 cl>2 theN_wa87+code#e21   > theN_watvFY_amERR_DAS>="line" naris _wa87+code#e21   >217esnt<>23of20 3eeds to be hande#5s1   >217e5SYMBO2ode=d_inode" tmp=mn5_drop57NKABLne" 21id8>293y"rut2hre9ss2"comm2ntrut2LEfsd_inode" ihrrSY RA"5class="l5cass="line5S_ERRhr29ss="27re that *s5me*mn57opy_">/**_strnkfreeline)
<20 theN_wa87+code#e21   > theN_watvFY_amERR_DAS>="line" narrrrrrrr)s>21 95PTR27RRhre9ss="comopy_">/5*_str57L410"ne" 21id8>293y"rut1hre9ss2"comm2ntrut1LEfsd_inode" ihrrSY RA"5class="l5c="+code5v500<5f 8nt_wa87+code#e21  5>217e57f">m29RRhre9ss="commentPTR_E theN_wa87+code#e21   > theN_watvFY_amERR_DAS>="line" na cl>20kfree39seq_file)
293y"rut0rrrrr
9a hre92ss="erooof20 needs to beeroorLEfs5vffmp=mnt_drop_w9itetmpmnEX51o notao2_5 nam2ewfne" nam2097a hre95ewfne57 N;)5>21 958ests="sref">mnt/a>., ;1lasof7nro842e"32amr"5clanrite2mpy_">/**_strin="gs<00"5clas2="lin29izerop5vffmp=mnt_drop_w9itetmpmnEX55vf"hre9ss5"t">(_l * also all     so5all9w584ite2mpmnEXlsi" all     so all9ws f"L4_s to be h" nam2097a hre9"L4_s to be hine"opy_">/**_strin="4 * also all     n5ine"5vffmp=mnt_drop_w9itetmpmnEX551>)s>21 95 410< do notao5"enro585ite2mpmnEXlsi" all     so all9ws fherehre9ss2"comm2ntwherRT_S     so all9ws fris _wa87+code#e21   >217est<>23of20 3eeds to be hande#55re9=21pol5ment">(_llsre1sp,a href="5code558ref=6" class=21/sp>214t" 2le.c#L5ass="amesp5ce.c#219ee>2168ro2=enro8259>2sp58efline" /sp,a href="+code5va"p_00"5clas2="lin29izeropo2_wr3EmnEX))S_M3Cdo_kernABLmespace.c#MNT_SHRINKAkernABLmesine" cine" nam2097string9>"    fs", 0xC=s, 0, cine" nam2097string9>"    fs", 0xC=s, wr3EmnEX))S_M3CNUL)
<20 cl>20c useNUL))
="line"oo"l href="+code5va"liroo"s="s21a>)ags2span cl9s5"fs* 58/aw2400"5class="line"2129a hr29=2192 tnichre9ss2"comm2ntwhnicine" cine" nam2097string9>"Can'tacreat32    fs", 0xC=s href=newfne" nam2097a hre9ne59=21="line5 /sp,a href="+code5vfsmc"5i"lin59ests="sref">mnt/a>., ;217smc2i5ivenr595c2ass="line"sb57" i"2129a hr29=2192 tnichre9ss2"comm2ntwhnicine" cine" nam2097string9>"Can'taallocat32initial am2097a h", 0xC=s href=newfne" nam2097a hre9ne59vf"hre9ss5 ef">f 8nt_wa87+code#e21 5 >21759p2_fl97a hre9news="s0<59>       5i1>)s>21 95e)
 410< do notaline" /spinit1tasta>7nro842e"32aminit1tastcros_lsref">mnt_a>)ansproxygiven =2"thm22>nsproxyeropsAlso 4a hreab0>)agsm29RRhre9ss="commentPTR_Eg"c1217hre2="+code=br2wr5te_4459n);
217ris _wa87+code#e21   >217es_lsref">mnt_a>)ags<00"5clas2="lin29izerop 2_wr3EmnEX))S_M3C"L400"5clas2="lin29izerop5vffmp=mnt_drop_w9itetmpmnEX51o notao2_5mi"line)
<20 cl>20mi"s="s5opy_"59trinsecurity_)ags217es_lsref">mnt_a>)a8a2srygiven =2"thm22>/>2srysrefo2_wr3EmnEX))S_M3C"L400"5clas2="lin29izeropsAlso 4a hreab0>)agsmnt/a>., ;2129ro3<458"5id="3400"5c6ass="60"5id="L400"5class="line"2171s"c1fsopwrrrrrr)agss * also all     fscros6;1nt<>217hr" na_add_t>is _wa87+code#e21   >217esn5vffmp=mnt_drop_w9itetmpmnEX692"fs/21"56>"ag82909=21="line" /sp,a6217es60code5vfsmc" i"line)
<20 cl>2s"c1fso    f20 needs to bes"c1fso    ine" code=__m5vf"hrecurrfne id=_ne"5class=currfneeropsAlso 4a hreab0>)agss * also all     fscros6;1nt<>217hr" na_add_t>is _wa87+code#e21   >217esn5vffmp=mnt_drop_w9itetmpmnEX693"fs/21"56>7 call abo21   >217smc2i6 2   602a hr400"5class="line" nam21n9a h6lass="sref6>mnt)
1lasofclas2="s2095a hre9=20 cl6ne" n60ref=6cl>207" sNOEXEsue 0x42),6"line" nanewf20security_s657" i60efline" /sp,aunsigneiocode=__m5vf"hreu"6 called 28"5is"5cl5vffmp=mnt_drop_w9itetmpmnEX6o8ard_a>),6"e&amr"5clanrop___nd21nt<6" nmb608iata>="line"oi)N    so all9ws ferof20 needs to beero"5cl5vffmp=mnt_drop_w9itetmpmnEX6o9ard_a>),6"i"line)
<20 cl>20mi"s="s6id=_n60/aw24vffmp=mnt_drop_w9itetmpmnEX6id="L30ain6" name="L396"21>)s>21 9ef6<43="61hre9ss="commentre ufpageoptiinit1rwsema>7nro842e"32aminit1rwsemtvFY_amERR_DAS>="line" na _w9itetm_sema>7nro842e"32am _w9itetm_sem17esn5vffmp=mnt_drop_w9itetmpmnEX6i="fs/21"56span cl8       2161rrrr612163mn2_enro82/9>2span cl9ss"fs*6i2"fs/21"56ageo31span cl8       2161code5vfsmc" i"line)
<20 cl>29newcachef20 needs to be9newcachesrefo2_wr3EmnEX))S_M3Ckmemwcache_0reat3f20 needs to bekmemwcache_0reat3ine" cine" nam2097string9>"9newcache", 0xC=s, sizeof_i" all     so all9ws fiol"sreshre9ss="comol"s="sref)6 all9ws f293yEN2MEMeq_putc=6i3"fs/21"56ntirop_)5id="L403"51].31569"fs/615c2ass="line"sb57" i"""""""""0, wr3EmnEX))S_M3CSLAB_HWCACHE_ALIG9ws fi)S_NOSUIfrSLAB_HWCACHE_ALIG9c2ass| wr3EmnEX))S_M3CSLAB_PANICws fi)S_NOSUIfrSLAB_PANICcros6;wr3EmnEX))S_M3CNUL)
<20 cl>20c useNUL))
 410< do notaline" /spnlanrohashtable id=_ne"5class=nlanrohashtablesrefo2__i" all     so all9ws flisrohearrrrrrmos fi93yMNT__g"c1fwrie" ihine" code=__m5vf"hreGFP_ATOMICws fi)S_NOSUIfrGFP_ATOMIC)
214t" 2le.c#L6iyard_a>),6 is a 2     289ss="commen6">(_l61reef="enro65"oo"le9c ef">1lasof217e6lled 2write_ N;"Fail=2=21sallocat32msmc>fhash table\n", 0xC=s href=newfne" nam2097a hre9ne65lsr383" i6a hre9=21mmeests="srefopy6">/**61/aw24vffmp=mnt_drop_w9itetmpmnEX62_get_2ser6re9ss="comment__geeeeeeee6eeeee62hre9ss="commentre ufpageoptiprintta>7nro842e"32amprinttine" code=__m5vf"hreKERN_INFOa>7nro842e"32amKERN_INFOvfdat9ine" nam2097string9>"Msmc>-cachefhash table >2sries: %lu\n", 0xC=s6;wr3EmnEX))S_M3CHASH_SIZEa>7nro842e"32amHASH_SIZE)
2span cl9ss"fs*622"fs/21"56 all9ws fimmeestam2167nro842e"32amHASH_SIZE)
     e.c#L457break5i6="L20625c2ass="line"sb57" i"2129a hr29=2192INIT_LIST_HEAD00"5clas2="lin2"NIT_LIST_HEADtvFY_amERR_DAS>="line" nanlanrohashtable id=_ne"5class=nlanrohashtablesref[code=__m5vf"hreu"6 called 28"5is"5cl] href=newfne" nam2097a hre9ne62ass="sref6te_458"5id="L400"5clas2="6in22>62p2_fl97a hre9news="s0<59>       643e)

g6L410"> 410< do notao2"+co6e=___62L410"> 410< do notaline" /spbrop___winitf20 needs to bebrop___winittvFY_amERR_DAS>="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#623ine"21
<6="L>21 4ef2ce.c#L457"2id96L4>
962ref=6" class=21/sp>214t" 2le.c#L62yard_a>),6class="line" nll9ws fi93y6NT_SH62efline" /sp,a href="+code5vaerof20 needs to beero"5clo2_wr3EmnEX))S_M3Csysfswinitf20 needs to besysfswinittvFY_nt<>23of20 3eeds to be hande#621   >217e68"5id="L400"5class="line"61"7a 628iata>="line"oo"l href="+code5vaerof20 needs to beero"5cln29=21426EMeq_putc=d_iL400"564lsr383" i6 410< do notao6"writ62/aw2400"5class="line"2129a hr29=2192printta>7nro842e"32amprinttine" code=__m5vf"hreKERN_WARNINGa>7nro842e"32amKERN_WARNINGvfdat9ine" nam2097string9>"%s: sysfswinit eroor: %d\n", 0xC=s629=21426EMeq_putc=d_iL400"56(), n>is f6nc21how>21n4ef20/a>-><6>moun632141a hre9=21k for f s="line"2129a hr29=2192__func__rL>mos fi93yMNT__func__cros6;wr3EmnEX))S_M3Cerof20 needs to beero"5clnt<>23of20 3eeds to be hande#6NOSUIfs="s68nt_wa87+code#e21   >217e6p2"fs", 0xC=s, wr3EmnEX))S_M3CNUL)
<20 cl>20c useNUL))
21n4ef2 1lasof217esp67nro842e"32amprinttine" code=__m5vf"hreKERN_WARNINGa>7nro842e"32amKERN_WARNINGvfdat9ine" nam2097string9>"%s: kobjacreat32eroor\n", 0xC=s6;wr3EmnEX))S_M3C__func__rL>mos fi93yMNT__func__cros href=newfne" nam2097a hre9ne6(ass="sref6nc21how>21n4ef2 ass="sres6signe63p2_flag>eq_p2ntre ufpageoptiinit1r   fsa>7nro842e"32aminit1r   fstvFY_nt<>23of20 3eeds to be hande#6(3e)

g6wa87+code#e21   >217esp2<6code=63L410"> 410< do notaline" /spinit1nlanrouser2/annotacross Tinit1nlanrousertvFY_nt<>23of20 3eeds to be hande#6(3ine"21
<621   >217esp2),6ode#e21   >217esp2<6 call6d 2
963n);
217e6217esp2/**_strin="4 * also all     n5ine"n29=21426EMeq_putc=d_iL400"56Nlsr383" i6e#e21   >217esp2207" sNOEXEsue 0x42is6   >217esp200"5 400<52>  6   N;642re9ss="commeoo"le9c ef">1lasof="line" na  * also all     n5ine"sAlso 4a hreab0>)agscol"sreshre9ss="comoc"s="sref)n29=21426EMeq_putc=d_iL400"56_inodeENOM6class="line" nll9ws fi93y6NT_SH645c2ass="line"sb57" i"3y    href=newfne" nam2097a hre9ne6Iass="sref6ECromfs/namespace)S_NOEXE6s="s 64p2_flag>eq_p2ntre ufpageoptidownaam209given =2"thm22>/ownaam209tvFY_amERR_DAS>="line" na _w9itetm_sema>7nro842e"32am _w9itetm_sem17esn5vffmp=mnt_drop_w9itetmpmnEX6e3e)

g6IMh"L40 |00"5class="line"6S_NOD64L410"> 410< do notaline" /spbroam209newfne" nam2097a hre9nlam209newfntvFY_amERR_DAS>="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#6_3ine"21
<6am2156a hre9=)S_9=21MOUN"6="s |64f">m29RRhre9ss="commentPTR_Esnlanrouser2/annotacross TunlanrousertvFY__DAS>="line" na  * also all     n5ine"sAlso 4a hreab0>)agsris _wa87+code#e21   >217es6;06;1nt<>217hr" na_add_tuclanropis2"6 called 28"5isclanropis2cros href=newfne" nam2097a hre9ne6Iyard_a>),6 fillsssssssss* th2"rema26teeyard_aam209nsreshrtvFY_amERR_DAS>="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#6e1   >217e6 be handled21all>216dro2_6rite<64<5f 8nt_wa87+code#e21   >217upaam209given =2"thm22>upaam209tvFY_amERR_DAS>="line" na _w9itetm_sema>7nro842e"32am _w9itetm_sem17esn5vffmp=mnt_drop_w9itetmpmnEX6elsr383" i6apatham216="line" nauclanropis2"6 called 28"5isclanropis2cros href=newfne" nam2097a hre9ne6os fi93yMN6_SHRINKABLEfs/namespace }6is6, "line" napatham2167nro842e"32amr"5clanrite2mpy_">/**_strin="kernABLmes_data2/annotacross TkernABLmes_datatvFY_i" all     so all9ws ffile_systw"_typr2/annotacross Tfile_systw"_typrite2mpy_">/**_strin="typr2/annotacross Ttyprite2,/**_strin="data2/annotacross TdatatvFYn29=21426EMeq_putc=d_iL400"56a>)ags207" sNOEXEsue 0x42217esp26+code655ite2mpmnEXlsi" all     so all9ws fr"5clanra>7nro842e"32amr"5clanrite2mpy_">/**_strin="gs<00"5clas2="lin29izerop5vffmp=mnt_drop_w9itetmpmnEX6e3ine"21
<6tam216m29RRhre9ss="commentPTR_Egs<00"5clas2="lin29izerop 2_wr3EmnEX))S_M3CvfswkernABLmespace.c#MNT_SHRIvfswkernABLmestvFY__DAS>="line" natypr2/annotacross Ttyprite2,<_DAS>="line" naMS_KERNMOUL(charwn)f="+codeMS_KERNMOUL(ite2,<_DAS>="line" natypr2/annotacross Ttyprite2sAlso 4a hreab0>)agsneesa>7nro842e"32am _w9ite2,<_DAS>="line" nadata2/annotacross TdatatvFYn5vffmp=mnt_drop_w9itetmpmnEX6eyard_a>),6>eyard_a>), "line" napath6m216<65reef="enro65"oo"le9c ef">1lasof)ags217e6"line" napatham2168, 0xC=ska hrefsa hrene"5fore9ss"ne6do notao2_6rite
9a hre926s="sm65> 410<21"li>2188rop_enro82/99999999999999999* i  is**alongterm2msmc>, 1on'tar"lease 9iz mc>il, 0xC=ska hrefsa hrene"5fore9ss"ne6ne" nam2146a hre9=21a>)ags2span999999999999999*s, 0xC=ska hrefsa hrene"5fore9ss"ne6ns(), n>is6f">eyard_a>), "line" napa6ham2166     8a hr3f="+code=m)ags20c useMNT_NS_INTERNA)erop5vffmp=mnt_drop_w9itetmpmnEX621   >217e6p20458"5id="2400"5class="6ine"2669ite2mpmnEXls400"5class="line" nam21n9a h6lass="line6 nammmeestam216/**_str3y     n>
9a hre92ss="gs<00"5clas2="lin29izerop5vffmp=mnt_drop_w9itetmpmnEX6lspaceo 8n6f2"+code=___2code5vfsmcla6s="s266L410"400"5class="line" nam21n9a h6l3ine"21
<6smc>)Lf="+code=__m5vf"hre6ss="t66f">m2n>
9a hre92ss="EXPORT_SYMBOL_GP)
<20 cl>20c use0XPORT_SYMBOL_GP)trndnewfne" nam2097akernABLmes_data2/annotacross TkernABLmes_datatvFYn5vffmp=mnt_drop_w9itetmpmnEX6ff7" i" ef6ce.c#219ee>2168ro2=ORT_SY6BO2>m66n);
2/annotacross TkernAmcmsmc>tvFY_i" all     so all9ws fr"5clanra>7nro842e"32amr"5clanrite2mpy_">/**_strin="gs<00"5clas2="lin29izeropn29=21426EMeq_putc=d_iL400"56no notao2_6nes="srefopy_">/**_strink6hre9c665amERcl>207" sNOEXEsue 0x428 r"lease long term2msmc>s offsmc>fop_)5 ce" be r"leased *s, 0xC=ska hrefsa hrene"5fore9ss"ne6="s58nt_wa67+code#e21   >217esp26>467commentre ufp s* e9c ef">1lasof20c useAGE_SI_OR_NUL)ZCL_COPY_A nam21n9a gs<00"5clas2="lin29izeropn) cl>207" sNOEXEsue 0x42="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#6s1   >217e6SYMBO2ode=d_inode" tmp=mn6_drop675c2ass="line"sb57" i"2129a hr29=2192real17esp2"6 called 28"5ireal17esp2trndnewfne" nam2097ags<00"5clas2="lin29izeropnsAlso 4a hreab0>)ags20c useNUL))
23of20 3eeds to be hande#6sass="line6S_ERRhr29ss="27re that *s6me*mn67opy_">/**_str"+code=m)agseyard_aam209nsreshrtvFY_amERR_DAS>="line" nam2097a hre9ata>7nro842e"32amr"5clanrop___nd21nt<>23of20 3eeds to be hande#611>)s>21 96PTR27RRhre9ss="comopy_">/6*_str67_____ef">mnt_a>)ags)ags217e67f">m29RRhre9s400"5class="line" nam21n9a h6ewfnes="so6__5id="L400"5classevei"li6e)
<267n);
<400"5class="line" nam21n9a h6ede#e21   6o2="+code=bn2
9a hre92ss=6swher675vfdan>
9a hre92ss="EXPORT_SYMBOL
<20 cl>20c use0XPORT_SYMBOLtrndnewfne" nam2097akernAmcmsmc>2/annotacross TkernAmcmsmc>tvFYnt<>23of20 3eeds to be hande#61o notao2_6 nam2ewfne" nam2097a hre96ewfne67/aw24vffmp=mnt_drop_w9itetmpmnEX6="l2ne" n262178aine" name="L396"21>)6>21 968ests=)agseyardoolvfdat9ags7nro842e"32amr"5clanrite2mpy_">/**_strin="gs<00"5clas2="lin29izeropn29=21426EMeq_putc=d_iL400"56="s58nt_wa6 s"=op ha00<58>207" sNOEXEsue 0x42eal17esp2"6 called 28"5ireal17esp2trndnewfne" nam2097ags<00"5clas2="lin29izeropnnt<>23of20 3eeds to be hande#6=7esp2 ORT6lows up to 31 noncopied(_l * also all     so6all9w684ite2


(_l * afooter"> The original LXRs oftwar" by2a 3 0"5class=http://sourceforge.net/projects/lxr">LXRsa hrunitysref6;this*experire9aal version by20"5class=mailto:lxr@lsoux.no">lxr@lsoux.nosref.
(_l * asubfooter"> lxr.lsoux.no kindly hos2ed by20"5class=http://www.redpill-lsopro.no">Redpill Lsopro ASsref6;provider of Lsouxsa nsulting and operations services since 1995.