From: Robert S Peterson <rpeterso@redhat.com>
To: Anton Altaparmakov <aia21@cam.ac.uk>,
Andrew Morton <akpm@osdl.org>,
fs-devel mailing list <linux-fsdevel@vger.kernel.org>
Subject: [PATCH] loop.c to use write ops for fs requiring special locking
Date: Mon, 27 Mar 2006 15:52:02 -0600 [thread overview]
Message-ID: <1143496322.10856.22.camel@technetium.msp.redhat.com> (raw)
Use normal write file operations rather than AOPS prepare_write and
commit_write when the backing filesystem requires special locking.
Signed-off-by: Robert Peterson <rpeterso@redhat.com>
---
drivers/block/loop.c | 9 ++++++++-
include/linux/fs.h | 1 +
2 files changed, 9 insertions(+), 1 deletions(-)
121d2e76ae4b3f7ca3741e410664e138db5e1b13
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 9c3b94e..c762e76 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -44,6 +44,11 @@
* backing filesystem.
* Anton Altaparmakov, 16 Feb 2005
*
+ * Extension of Anton's idea: Use normal write file operations rather than
+ * prepare_write and commit_write when the backing filesystem requires
+ * special locking.
+ * Robert Peterson <rpeterso@redhat.com>, 01 Mar 2006
+ *
* Still To Fix:
* - Advisory locking is ignored here.
* - Should use an own CAP_* category instead of CAP_SYS_ADMIN
@@ -74,6 +79,7 @@
#include <linux/completion.h>
#include <linux/highmem.h>
#include <linux/gfp.h>
+#include <linux/mount.h>
#include <asm/uaccess.h>
@@ -791,7 +797,8 @@ static int loop_set_fd(struct loop_devic
*/
if (!file->f_op->sendfile)
goto out_putf;
- if (aops->prepare_write && aops->commit_write)
+ if (!(file->f_vfsmnt->mnt_sb->s_type->fs_flags & FS_AOPS_NEED_LOCKING) &&
+ aops->prepare_write && aops->commit_write)
lo_flags |= LO_FLAGS_USE_AOPS;
if (!(lo_flags & LO_FLAGS_USE_AOPS) && !file->f_op->write)
lo_flags |= LO_FLAGS_READ_ONLY;
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 9d96749..3def72e 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -88,6 +88,7 @@ extern int dir_notify_enable;
/* public flags for file_system_type */
#define FS_REQUIRES_DEV 1
#define FS_BINARY_MOUNTDATA 2
+#define FS_AOPS_NEED_LOCKING 4 /* Filesystem aops have special locking needs */
#define FS_REVAL_DOT 16384 /* Check the paths ".", ".." for staleness */
#define FS_ODD_RENAME 32768 /* Temporary stuff; will go away as soon
* as nfs_rename() will be cleaned up
--
1.2.4
next reply other threads:[~2006-03-27 21:49 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-27 21:52 Robert S Peterson [this message]
2006-03-28 0:44 ` [PATCH] loop.c to use write ops for fs requiring special locking Andrew Morton
2006-03-28 15:33 ` Robert S Peterson
2006-03-28 19:27 ` Andrew Morton
2006-03-28 14:40 ` Christoph Hellwig
2006-03-28 15:59 ` Robert S Peterson
2006-03-29 9:05 ` Christoph Hellwig
2006-03-30 0:10 ` Robert S Peterson
2006-03-30 14:15 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2006-03-01 16:48 [patch] " Robert S Peterson
2006-03-01 22:09 ` Andrew Morton
2006-03-02 10:16 ` Anton Altaparmakov
2006-03-10 23:04 ` Robert S Peterson
2006-03-10 23:13 ` Andrew Morton
2006-03-11 0:36 ` Anton Altaparmakov
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=1143496322.10856.22.camel@technetium.msp.redhat.com \
--to=rpeterso@redhat.com \
--cc=aia21@cam.ac.uk \
--cc=akpm@osdl.org \
--cc=linux-fsdevel@vger.kernel.org \
/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.