From: Fernando Luis Vazquez Cao <fernando_b1@lab.ntt.co.jp>
To: Jan Kara <jack@suse.cz>
Cc: "Al Viro" <viro@zeniv.linux.org.uk>,
"Josef Bacik" <jbacik@fusionio.com>,
"Eric Sandeen" <sandeen@redhat.com>,
"Dave Chinner" <dchinner@redhat.com>,
"Christoph Hellwig" <hch@infradead.org>,
linux-fsdevel@vger.kernel.org,
"Fernando Luis Vázquez Cao" <fernando@intellilink.co.jp>
Subject: Re: [PATCH 8/9] fsfreeze: add vfs ioctl to check freeze state
Date: Tue, 09 Oct 2012 18:46:26 +0900 [thread overview]
Message-ID: <5073F272.3080103@lab.ntt.co.jp> (raw)
In-Reply-To: <20121008150516.GE9243@quack.suse.cz>
On 2012/10/09 00:05, Jan Kara wrote:
> On Fri 05-10-12 14:43:29, Fernando Luis Vázquez Cao wrote:
>> The FIISFROZEN ioctl can be use by HA and monitoring software to check
>> the freeze state of a mounted filesystem.
>
> I was thinking about this and your use case and I thing this is just a
> wrong way to fix a problem with your HA application. E.g. in case you
would
> "umount -l" your filesystem, you would hit the same problem as in
presence
> of freezing and the ioctl won't help you. Now I understand that in your
> specific use case you likely don't need to deal with lazy umounts but we
> shouldn't add an interface just to accomodate one use case and later find
> out we need another interface for slightly different one.
By the way, we can end up with a detached and active superblock even
without using lazy umount; it is possible to do a regular umount of a
frozen filesystem.
> So what you rather seem to need is some interface which allows you to
> investigate filesystems that are mounted on a block device but not
attached
> anywhere in the namespace. Would that be enough for you? If yes, some
> extension to /proc/self/mountinfo to do this should be possible...
Well, neither /proc/self/mount* nor /proc/mounts show superblocks not
attached anywhere in the namespace and changing that behavior could
wreck havoc in userspace scripts and management software. I would
rather not change that de-facto ABI unless it is strictly needed. On
the other hand, the check ioctls add a new userspace API that would
not break anything.
Regarding your concern about the ioctl approach, when a frozen
filesystem is detached from the namespace it can still be reached
through the block device it is sitting on (well... with the exception
of btrfs which has some issues that I am working on) and this is the
reason I added a block device level check ioctl too. That said, if one
day we have a filesystem which is not block device based and supports
fsfreeze (ioctl_fsfreeze() returns -EOPNOTSUPP if the superblock has
no ->freeze_fs operation, which is the case for all virtual
filesystems and NAS drivers that we have) the two check ioctls would
not cover that case.
I think that to cover all cases without adding a completely new API we
need to do the following:
1) Filesystems which are not tied to a block device (virtual
filesystems, NAS, etc):
As soon as the filesystem is removed from the namespace the
superblock based fsfreeze ioctls become useless; if we let a umount
of a frozen filesystem succeed we would not be able to thaw it (well
we could use emergency thaw but it would be overkill). Since we do
not want to break lazy umounts the only viable solution is thawing
the superblock automatically on umount (releasing the active
reference taken in freeze_super() to be more precise).
2) Block device based filesystems:
These can be reached through the block device it is sitting on even
if the filesystem was detached from the namespace and have the
particularity that they can be frozen using two different APIs, a
block device level one and the ioctls. When a filesytem was frozen
using the former, which only has in-kernel users such as dm,
automatically thawing the filesystem on umount is arguably too rude
(we can end up breaking the filesystem level consistency of a
storage snapshot). It we care about this, we could modify
sys_umount() so that filesystem is automatically thawed if and only
if there are no block device level freezes active. This behavior
would be consistent with case 1) above (the premise here is that
both fsfreeze and umount are userspace controlled operations and the
administrator should know what it is doing) and is the less likely
to cause surprises to freeze_bdev() users.
It would also be nice to have a block device level thaw ioctl for
emergency cases (for example, a scenario where thaw_bdev() was not
called and the freeze counter was left in a inconsistent state;
freeze_bdev() and thaw_bdev() are exported symbols and in many cases
we cannot control what external modules do).
Thanks,
Fernando
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2012-10-09 9:46 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-05 5:24 [PATCH 0/9 v5] fsfreeze: miscellaneous fixes and cleanups Fernando Luis Vázquez Cao
2012-10-05 5:31 ` [PATCH 1/9] vfs: add __iterate_supers() and helpers around it Fernando Luis Vázquez Cao
2012-10-08 13:48 ` Jan Kara
2012-10-05 5:33 ` [PATCH 2/9] fsfreeze: add unlocked version of thaw_super Fernando Luis Vázquez Cao
2012-10-05 5:34 ` [PATCH 3/9] fsfreeze: Prevent emergency thaw from looping infinitely Fernando Luis Vázquez Cao
2012-10-05 5:35 ` [PATCH 4/9] fsfreeze: emergency thaw will deadlock on s_umount Fernando Luis Vázquez Cao
2012-10-08 13:57 ` Jan Kara
2012-10-09 5:07 ` Fernando Luis Vazquez Cao
2012-10-09 8:20 ` Jan Kara
2012-10-09 9:52 ` Fernando Luis Vazquez Cao
2012-10-05 5:38 ` [PATCH 5/9] xfs: switch to using super methods for fsfreeze Fernando Luis Vázquez Cao
2012-10-05 5:39 ` [PATCH 6/9] fsfreeze: move emergency thaw code to fs/super.c Fernando Luis Vázquez Cao
2012-10-05 5:42 ` [PATCH 7/9] fsfreeze: freeze_super and thaw_bdev don't play well together Fernando Luis Vázquez Cao
2012-10-08 14:17 ` Jan Kara
2012-10-05 5:43 ` [PATCH 8/9] fsfreeze: add vfs ioctl to check freeze state Fernando Luis Vázquez Cao
2012-10-08 15:05 ` Jan Kara
2012-10-09 9:46 ` Fernando Luis Vazquez Cao [this message]
2012-10-09 14:55 ` Jan Kara
2012-10-10 2:17 ` Fernando Luis Vazquez Cao
2012-10-11 16:26 ` Jan Kara
2012-10-05 5:44 ` [PATCH 9/9] fsfreeze: add block device " Fernando Luis Vázquez Cao
-- strict thread matches above, loose matches on Subject: below --
2012-09-14 6:43 [RFC, PATCH 0/9 v4] fsfreeze: miscellaneous fixes and cleanups Fernando Luis Vázquez Cao
2012-09-14 6:54 ` [PATCH 8/9] fsfreeze: add vfs ioctl to check freeze state Fernando Luis Vázquez Cao
2012-09-13 10:57 [RFC 0/9 v3] fsfreeze: miscellaneous fixes and cleanups Fernando Luis Vázquez Cao
2012-09-13 11:11 ` [PATCH 8/9] fsfreeze: add vfs ioctl to check freeze state Fernando Luis Vázquez Cao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5073F272.3080103@lab.ntt.co.jp \
--to=fernando_b1@lab.ntt.co.jp \
--cc=dchinner@redhat.com \
--cc=fernando@intellilink.co.jp \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=jbacik@fusionio.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=sandeen@redhat.com \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.