Re: get_sb/fill_super and BKL (VFS mounting)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



AFAIK, Big kernel lock is indeed taken, but not inside get_sb but in sys_mount itself. Here is the code snippet:

fs/namespace.c (function sys_mount)
----------------------------snip---------------------------
        lock_kernel();
        retval = do_mount((char *)dev_page, dir_page, (char *)type_page,
                          flags, (void *)data_page);
        unlock_kernel();
----------------------------snip---------------------------

On 4/10/07, John Anthony Kazos Jr. <jakj@xxxxxxxxxxx> wrote:
I have looked and looked and cannot find anything to substantiate the
claim in Documentation/filesystems/Locking that the BKL is held during
calls to the get_sb method of file_system_type during mounting.

It really has to be in there somewhere, because ext3/ext4 both structure
their fill_super functions as unlock_kernel()/<do stuff>/lock_kernel() and
since I figure at least one person on the planet has used ext3/ext4 on a
box where [un]lock_kernel() are not no-ops without locking their box up...

What am I missing? I've traced the entire chain from sys_mount through to
vfs_kern_mount, the call to the get_sb method, and the calls to the
fill_super method by the provided get_sb functions. I can see the BKL
during unmounting and remounting, but not during mounting. I must be an
idiot.

It makes sense that it would be held, because it would be a race to have
the same block device being mounted by the same filesystem concurrently
(since bd_claim allows this), but is it really?

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux