* [Ocfs2-devel] Local FS mount @ 2006-11-22 15:37 Sunil Mushran 2006-11-22 15:47 ` Jeff Mahoney 2006-11-22 17:26 ` Joel Becker 0 siblings, 2 replies; 5+ messages in thread From: Sunil Mushran @ 2006-11-22 15:37 UTC (permalink / raw) To: ocfs2-devel http://oss.oracle.com/osswiki/OCFS2/DesignDocs/LocalMount Please review the writeup and the patches for the Local FS Mount. I was hoping to get some feedback. The patch works and has been tested with the mainline kernel. Thanks Sunil ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Ocfs2-devel] Local FS mount 2006-11-22 15:37 [Ocfs2-devel] Local FS mount Sunil Mushran @ 2006-11-22 15:47 ` Jeff Mahoney 2006-11-22 15:51 ` Sunil Mushran 2006-11-22 17:26 ` Joel Becker 1 sibling, 1 reply; 5+ messages in thread From: Jeff Mahoney @ 2006-11-22 15:47 UTC (permalink / raw) To: ocfs2-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Sunil Mushran wrote: > http://oss.oracle.com/osswiki/OCFS2/DesignDocs/LocalMount > > Please review the writeup and the patches for the Local FS Mount. > I was hoping to get some feedback. The patch works and has been tested > with the mainline kernel. Thanks for releasing this Sunil! We've been looking for a way to allow YaST to create and mount OCFS2 file systems at boot without the cluster configured. - -Jeff - -- Jeff Mahoney SUSE Labs -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org iD8DBQFFZOHuLPWxlyuTD7IRAr5LAJ4miio9e0r0Lwoz8dB6kTEd46kpbQCfUYgB fgvqNTrgfBkRvyv7dgs/WYA= =qtnQ -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Ocfs2-devel] Local FS mount 2006-11-22 15:47 ` Jeff Mahoney @ 2006-11-22 15:51 ` Sunil Mushran 0 siblings, 0 replies; 5+ messages in thread From: Sunil Mushran @ 2006-11-22 15:51 UTC (permalink / raw) To: ocfs2-devel Yes, we've had many people ask for it too. Happy Thanksgiving. Jeff Mahoney wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Sunil Mushran wrote: > >> http://oss.oracle.com/osswiki/OCFS2/DesignDocs/LocalMount >> >> Please review the writeup and the patches for the Local FS Mount. >> I was hoping to get some feedback. The patch works and has been tested >> with the mainline kernel. >> > > Thanks for releasing this Sunil! We've been looking for a way to allow > YaST to create and mount OCFS2 file systems at boot without the cluster > configured. > > - -Jeff > > - -- > Jeff Mahoney > SUSE Labs > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.2 (GNU/Linux) > Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org > > iD8DBQFFZOHuLPWxlyuTD7IRAr5LAJ4miio9e0r0Lwoz8dB6kTEd46kpbQCfUYgB > fgvqNTrgfBkRvyv7dgs/WYA= > =qtnQ > -----END PGP SIGNATURE----- > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Ocfs2-devel] Local FS mount 2006-11-22 15:37 [Ocfs2-devel] Local FS mount Sunil Mushran 2006-11-22 15:47 ` Jeff Mahoney @ 2006-11-22 17:26 ` Joel Becker 2006-11-22 21:22 ` Mark Fasheh 1 sibling, 1 reply; 5+ messages in thread From: Joel Becker @ 2006-11-22 17:26 UTC (permalink / raw) To: ocfs2-devel On Wed, Nov 22, 2006 at 03:37:38PM -0800, Sunil Mushran wrote: > http://oss.oracle.com/osswiki/OCFS2/DesignDocs/LocalMount Hey all, Sunil and I just had a discussion on the process of mounting a "local" filesystem, and I had a couple of thoughts and concerns that I'd love input on. Before we get to local mounts, a little recap on how it works in a cluster: 1) mount learns, via -t, fstab, or blkid, that this is an ocfs2 filesystem and calls mount.ocfs2 2) mount.ocfs2 reads the superblock and validates the thing 3) mount.ocfs2 starts the heartbeat 4) mount.ocfs2 calls sys_mount(2) 5) ocfs2_fill_super() notices that the heartbeat is running and goes about its business Ok, and here's how local mounts happen: 1) mount learns, via -t, fstab, or blkid, that this is an ocfs2 filesystem and calls mount.ocfs2 2) mount.ocfs2 reads the superblock and notices the INCOMAT flag for local mounts 3) mount.ocfs2 does NOT start heartbeat 4) mount.ocfs2 calls sys_mount(2) 5) ocfs2_fill_super() notices the INCOMPAT flag and doesn't worry about checking the heartbeat Sunil was bothered by something, though. There was no way to determine if an existing mount was local. So he added a ghost mount option: 1) mount learns, via -t, fstab, or blkid, that this is an ocfs2 filesystem and calls mount.ocfs2 2) mount.ocfs2 reads the superblock and notices the INCOMAT flag for local mounts 3) mount.ocfs2 does NOT start heartbeat 4) mount.ocfs2 adds "mount=local" to the options list 5) mount.ocfs2 calls sys_mount(2) with the additional option 6) ocfs2_fill_super() notices the INCOMPAT flag and validates it against the "mount=local" option. It still doesn't worry about checking the heartbeat This ghost mount option appears in the output of /proc/mounts and calls to mount(8) with no arguments. This allows the user to see "hey, it's a local mount!" This bothered me for two reasons. First, a "magic" option that the user never specified is a bit "dirty". There ought to be a better way. More importantly, though, there is no difference to the user that they tried to mount a local filesystem. They didn't specify it, so they may expect it to work clustered. Or, they may be expecting a local filesystem, but it is actually a clustered one. The point is, the automation took it out of the user's hands completely, but without obvious notification and/or recourse if it is the wrong thing. My first proposal was to create a new "ocfs2local" fstype. It would be a simple register_filesystem, and we'd now have two fill_super() calls: ocfs2_fill_super_real(...., int local); ocfs2_fill_super_cluster(....) { ocfs2_fill_super_real(...., 0); } ocfs2_fill_super_local(....) { ocfs2_fill_super_real(...., 1); } ocfs2_get_sb_cluster(....) { return get_sb_bdev(...., ocfs2_fill_super_cluster) } ocfs2_get_sb_local(....) { return get_sb_bdev(...., ocfs2_fill_super_local) } ocfs2_fstype = { .name = "ocfs2" .get_sb = ocfs2_get_sb_cluster } ocfs2local_fstype = { .name = "ocfs2local" .get_sb = ocfs2_get_sb_local } With this setup, the ocfs2_fill_super_real() call can just switch on the "local" argument. It can validate it against the INCOMPAT flag. Very little kernel code change other than the prototypes I've defined above. This solves Sunil's listing problem, because local mounts show "ocfs2local" for the fstype in /proc/mounts. This solves my "user must be declaritive" delimma, because the user must say "mount -t ocfs2local" now. If the user says "mount -t ocfs2" for a local filesystem, it will fail to mount. If they say "mount -t ocfs2local" for a clustered filesystem, it will fail to mount. Yay, that's cool. Oh, bother. If they don't specify "-t" at all, blkid will still identify an ocfs2 filesystem and call mount.ocfs2. Which will now fail. Oh, wait, that's not bad. We just need a newer blkid that sees the INCOMPAT flag and tries to mount an ocfs2local filesystem. We then noted that much the same behavior can be driven by making the user specify Sunil's "-o mount=local" option. That is, instead of automatically filling in this ghost option in mount.ocfs2, we can require the user specify it ("mount -t ocfs2 -o mount=local"). Then, if it isn't passed, the mount can fail. Similar, though not identical, behavior to my fstype proposal. The biggest drawback to either proposal is that we do require the user to specify something new on the mount command line. We don't automatically pick for them. I think that's a good thing, because it help people understand the situation, but it does add complexity and support questions and so on. Can we think of a better way to make it declaritive? Can we come up with an automated scheme that will never be contrary to what the user expected? If we leave the automation, we will of course field the opposite support calls. And we still haven't solved the "preventing two nodes from mounting a local-only filesystem at the same time" problem. That's why I worry. If the user has to expressly ask for local-only, they are less likely to think they are mounting a cluster filesystem when they do it on two nodes. Joel -- "Conservative, n. A statesman who is enamoured of existing evils, as distinguished from the Liberal, who wishes to replace them with others." - Ambrose Bierce, The Devil's Dictionary Joel Becker Principal Software Developer Oracle E-mail: joel.becker@oracle.com Phone: (650) 506-8127 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Ocfs2-devel] Local FS mount 2006-11-22 17:26 ` Joel Becker @ 2006-11-22 21:22 ` Mark Fasheh 0 siblings, 0 replies; 5+ messages in thread From: Mark Fasheh @ 2006-11-22 21:22 UTC (permalink / raw) To: ocfs2-devel On Wed, Nov 22, 2006 at 05:26:04PM -0800, Joel Becker wrote: > On Wed, Nov 22, 2006 at 03:37:38PM -0800, Sunil Mushran wrote: > > http://oss.oracle.com/osswiki/OCFS2/DesignDocs/LocalMount > Sunil was bothered by something, though. There was no way to > determine if an existing mount was local. So he added a ghost mount > option: > > 1) mount learns, via -t, fstab, or blkid, that this is an ocfs2 > filesystem and calls mount.ocfs2 > 2) mount.ocfs2 reads the superblock and notices the INCOMAT flag for > local mounts > 3) mount.ocfs2 does NOT start heartbeat > 4) mount.ocfs2 adds "mount=local" to the options list > 5) mount.ocfs2 calls sys_mount(2) with the additional option > 6) ocfs2_fill_super() notices the INCOMPAT flag and validates it > against the "mount=local" option. It still doesn't worry > about checking the heartbeat > > This ghost mount option appears in the output of /proc/mounts and calls > to mount(8) with no arguments. This allows the user to see "hey, it's a > local mount!" I don't see why this is such a big deal that it requires a magic mount option. If the user really cares, he/she can run a single debugfs.ocfs2 command against the file system. Also, we can add code to 'mounted.ocfs2' to indicate whether a file system is 'local' or not. > This bothered me for two reasons. First, a "magic" option that > the user never specified is a bit "dirty". There ought to be a better > way. More importantly, though, there is no difference to the user that > they tried to mount a local filesystem. They didn't specify it, so they > may expect it to work clustered. Or, they may be expecting a local > filesystem, but it is actually a clustered one. It bothers me too, but the scheme you described seems to just add much more code, complexity and engineering for a gain which we already have with the mount options. Two file system types just to describe a single format option is way overkill. Not to mention that it would require us to push changes out to blkid, etc. Anybody who has a script which parses ocfs2 out of a mount command would have to change that too. I suppose we'd also have to start distributing a mount.ocfs2local. By the way - the user _did_ specify that they wanted a local file system when they ran mkfs.ocfs2. Or when it ran as part of an installer, or a gui, or whatever. So, if the user has at least two other tools (debugfs.ocfs2, mounted.ocfs2) they can use, then there's no reason for either one. By the way, I bet most people will make 'local' file systems on non shared disks and will thus understand implicitely which disks hold 'local' ocfs2 volumes when they type 'mount'. If we inisist that we must make it such that users know 100% in a very explicit way via mount(8) whether an ocfs2 mount is local, then adding a mount option is the better way imho. --Mark -- Mark Fasheh Senior Software Developer, Oracle mark.fasheh@oracle.com ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-11-22 21:22 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-11-22 15:37 [Ocfs2-devel] Local FS mount Sunil Mushran 2006-11-22 15:47 ` Jeff Mahoney 2006-11-22 15:51 ` Sunil Mushran 2006-11-22 17:26 ` Joel Becker 2006-11-22 21:22 ` Mark Fasheh
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.