From: Jeff Layton <jlayton@kernel.org>
To: Christian Brauner <brauner@kernel.org>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Eric Van Hensbergen <ericvh@kernel.org>,
Latchesar Ionkov <lucho@ionkov.net>,
Dominique Martinet <asmadeus@codewreck.org>,
Christian Schoenebeck <linux_oss@crudebyte.com>,
David Howells <dhowells@redhat.com>,
Marc Dionne <marc.dionne@auristor.com>,
Xiubo Li <xiubli@redhat.com>, Ilya Dryomov <idryomov@gmail.com>,
Alexander Aring <aahringo@redhat.com>,
David Teigland <teigland@redhat.com>,
Miklos Szeredi <miklos@szeredi.hu>,
Andreas Gruenbacher <agruenba@redhat.com>,
Trond Myklebust <trond.myklebust@hammerspace.com>,
Anna Schumaker <anna@kernel.org>,
Chuck Lever <chuck.lever@oracle.com>, Neil Brown <neilb@suse.de>,
Olga Kornievskaia <kolga@netapp.com>,
Dai Ngo <Dai.Ngo@oracle.com>, Tom Talpey <tom@talpey.com>,
Jan Kara <jack@suse.cz>, Mark Fasheh <mark@fasheh.com>,
Joel Becker <jlbec@evilplan.org>,
Joseph Qi <joseph.qi@linux.alibaba.com>,
Steve French <sfrench@samba.org>,
Paulo Alcantara <pc@manguebit.com>,
Shyam Prasad N <sprasad@microsoft.com>,
Namjae Jeon <linkinjeon@kernel.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Steven Rostedt <rostedt@goodmis.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Ronnie Sahlberg <ronniesahlberg@gmail.com>
Cc: linux-kernel@vger.kernel.org, v9fs@lists.linux.dev,
linux-afs@lists.infradead.org, ceph-devel@vger.kernel.org,
gfs2@lists.linux.dev, linux-fsdevel@vger.kernel.org,
linux-nfs@vger.kernel.org, ocfs2-devel@lists.linux.dev,
linux-cifs@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
Jeff Layton <jlayton@kernel.org>
Subject: [PATCH v2 39/41] smb/server: adapt to breakup of struct file_lock
Date: Thu, 25 Jan 2024 05:43:20 -0500 [thread overview]
Message-ID: <20240125-flsplit-v2-39-7485322b62c7@kernel.org> (raw)
In-Reply-To: <20240125-flsplit-v2-0-7485322b62c7@kernel.org>
Most of the existing APIs have remained the same, but subsystems that
access file_lock fields directly need to reach into struct
file_lock_core now.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
fs/smb/server/smb2pdu.c | 45 ++++++++++++++++++++++-----------------------
fs/smb/server/vfs.c | 15 +++++++--------
2 files changed, 29 insertions(+), 31 deletions(-)
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index d12d11cdea29..1a1ce70c7b2d 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -12,7 +12,6 @@
#include <linux/ethtool.h>
#include <linux/falloc.h>
#include <linux/mount.h>
-#define _NEED_FILE_LOCK_FIELD_MACROS
#include <linux/filelock.h>
#include "glob.h"
@@ -6761,10 +6760,10 @@ struct file_lock *smb_flock_init(struct file *f)
locks_init_lock(fl);
- fl->fl_owner = f;
- fl->fl_pid = current->tgid;
- fl->fl_file = f;
- fl->fl_flags = FL_POSIX;
+ fl->fl_core.flc_owner = f;
+ fl->fl_core.flc_pid = current->tgid;
+ fl->fl_core.flc_file = f;
+ fl->fl_core.flc_flags = FL_POSIX;
fl->fl_ops = NULL;
fl->fl_lmops = NULL;
@@ -6781,30 +6780,30 @@ static int smb2_set_flock_flags(struct file_lock *flock, int flags)
case SMB2_LOCKFLAG_SHARED:
ksmbd_debug(SMB, "received shared request\n");
cmd = F_SETLKW;
- flock->fl_type = F_RDLCK;
- flock->fl_flags |= FL_SLEEP;
+ flock->fl_core.flc_type = F_RDLCK;
+ flock->fl_core.flc_flags |= FL_SLEEP;
break;
case SMB2_LOCKFLAG_EXCLUSIVE:
ksmbd_debug(SMB, "received exclusive request\n");
cmd = F_SETLKW;
- flock->fl_type = F_WRLCK;
- flock->fl_flags |= FL_SLEEP;
+ flock->fl_core.flc_type = F_WRLCK;
+ flock->fl_core.flc_flags |= FL_SLEEP;
break;
case SMB2_LOCKFLAG_SHARED | SMB2_LOCKFLAG_FAIL_IMMEDIATELY:
ksmbd_debug(SMB,
"received shared & fail immediately request\n");
cmd = F_SETLK;
- flock->fl_type = F_RDLCK;
+ flock->fl_core.flc_type = F_RDLCK;
break;
case SMB2_LOCKFLAG_EXCLUSIVE | SMB2_LOCKFLAG_FAIL_IMMEDIATELY:
ksmbd_debug(SMB,
"received exclusive & fail immediately request\n");
cmd = F_SETLK;
- flock->fl_type = F_WRLCK;
+ flock->fl_core.flc_type = F_WRLCK;
break;
case SMB2_LOCKFLAG_UNLOCK:
ksmbd_debug(SMB, "received unlock request\n");
- flock->fl_type = F_UNLCK;
+ flock->fl_core.flc_type = F_UNLCK;
cmd = F_SETLK;
break;
}
@@ -6842,13 +6841,13 @@ static void smb2_remove_blocked_lock(void **argv)
struct file_lock *flock = (struct file_lock *)argv[0];
ksmbd_vfs_posix_lock_unblock(flock);
- wake_up(&flock->fl_wait);
+ wake_up(&flock->fl_core.flc_wait);
}
static inline bool lock_defer_pending(struct file_lock *fl)
{
/* check pending lock waiters */
- return waitqueue_active(&fl->fl_wait);
+ return waitqueue_active(&fl->fl_core.flc_wait);
}
/**
@@ -6939,8 +6938,8 @@ int smb2_lock(struct ksmbd_work *work)
list_for_each_entry(cmp_lock, &lock_list, llist) {
if (cmp_lock->fl->fl_start <= flock->fl_start &&
cmp_lock->fl->fl_end >= flock->fl_end) {
- if (cmp_lock->fl->fl_type != F_UNLCK &&
- flock->fl_type != F_UNLCK) {
+ if (cmp_lock->fl->fl_core.flc_type != F_UNLCK &&
+ flock->fl_core.flc_type != F_UNLCK) {
pr_err("conflict two locks in one request\n");
err = -EINVAL;
locks_free_lock(flock);
@@ -6988,12 +6987,12 @@ int smb2_lock(struct ksmbd_work *work)
list_for_each_entry(conn, &conn_list, conns_list) {
spin_lock(&conn->llist_lock);
list_for_each_entry_safe(cmp_lock, tmp2, &conn->lock_list, clist) {
- if (file_inode(cmp_lock->fl->fl_file) !=
- file_inode(smb_lock->fl->fl_file))
+ if (file_inode(cmp_lock->fl->fl_core.flc_file) !=
+ file_inode(smb_lock->fl->fl_core.flc_file))
continue;
- if (smb_lock->fl->fl_type == F_UNLCK) {
- if (cmp_lock->fl->fl_file == smb_lock->fl->fl_file &&
+ if (smb_lock->fl->fl_core.flc_type == F_UNLCK) {
+ if (cmp_lock->fl->fl_core.flc_file == smb_lock->fl->fl_core.flc_file &&
cmp_lock->start == smb_lock->start &&
cmp_lock->end == smb_lock->end &&
!lock_defer_pending(cmp_lock->fl)) {
@@ -7010,7 +7009,7 @@ int smb2_lock(struct ksmbd_work *work)
continue;
}
- if (cmp_lock->fl->fl_file == smb_lock->fl->fl_file) {
+ if (cmp_lock->fl->fl_core.flc_file == smb_lock->fl->fl_core.flc_file) {
if (smb_lock->flags & SMB2_LOCKFLAG_SHARED)
continue;
} else {
@@ -7052,7 +7051,7 @@ int smb2_lock(struct ksmbd_work *work)
}
up_read(&conn_list_lock);
out_check_cl:
- if (smb_lock->fl->fl_type == F_UNLCK && nolock) {
+ if (smb_lock->fl->fl_core.flc_type == F_UNLCK && nolock) {
pr_err("Try to unlock nolocked range\n");
rsp->hdr.Status = STATUS_RANGE_NOT_LOCKED;
goto out;
@@ -7176,7 +7175,7 @@ int smb2_lock(struct ksmbd_work *work)
struct file_lock *rlock = NULL;
rlock = smb_flock_init(filp);
- rlock->fl_type = F_UNLCK;
+ rlock->fl_core.flc_type = F_UNLCK;
rlock->fl_start = smb_lock->start;
rlock->fl_end = smb_lock->end;
diff --git a/fs/smb/server/vfs.c b/fs/smb/server/vfs.c
index d0686ec344f5..2b67cccea91c 100644
--- a/fs/smb/server/vfs.c
+++ b/fs/smb/server/vfs.c
@@ -6,7 +6,6 @@
#include <linux/kernel.h>
#include <linux/fs.h>
-#define _NEED_FILE_LOCK_FIELD_MACROS
#include <linux/filelock.h>
#include <linux/uaccess.h>
#include <linux/backing-dev.h>
@@ -338,18 +337,18 @@ static int check_lock_range(struct file *filp, loff_t start, loff_t end,
return 0;
spin_lock(&ctx->flc_lock);
- list_for_each_entry(flock, &ctx->flc_posix, fl_list) {
+ list_for_each_entry(flock, &ctx->flc_posix, fl_core.flc_list) {
/* check conflict locks */
if (flock->fl_end >= start && end >= flock->fl_start) {
- if (flock->fl_type == F_RDLCK) {
+ if (flock->fl_core.flc_type == F_RDLCK) {
if (type == WRITE) {
pr_err("not allow write by shared lock\n");
error = 1;
goto out;
}
- } else if (flock->fl_type == F_WRLCK) {
+ } else if (flock->fl_core.flc_type == F_WRLCK) {
/* check owner in lock */
- if (flock->fl_file != filp) {
+ if (flock->fl_core.flc_file != filp) {
error = 1;
pr_err("not allow rw access by exclusive lock from other opens\n");
goto out;
@@ -1838,13 +1837,13 @@ int ksmbd_vfs_copy_file_ranges(struct ksmbd_work *work,
void ksmbd_vfs_posix_lock_wait(struct file_lock *flock)
{
- wait_event(flock->fl_wait, !flock->fl_blocker);
+ wait_event(flock->fl_core.flc_wait, !flock->fl_core.flc_blocker);
}
int ksmbd_vfs_posix_lock_wait_timeout(struct file_lock *flock, long timeout)
{
- return wait_event_interruptible_timeout(flock->fl_wait,
- !flock->fl_blocker,
+ return wait_event_interruptible_timeout(flock->fl_core.flc_wait,
+ !flock->fl_core.flc_blocker,
timeout);
}
--
2.43.0
next prev parent reply other threads:[~2024-01-25 10:45 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-25 10:42 [PATCH v2 00/41] filelock: split struct file_lock into file_lock and file_lease structs Jeff Layton
2024-01-25 10:42 ` [PATCH v2 01/41] filelock: rename some fields in tracepoints Jeff Layton
2024-01-25 10:42 ` [PATCH v2 02/41] filelock: rename fl_pid variable in lock_get_status Jeff Layton
2024-01-25 10:42 ` [PATCH v2 03/41] dlm: rename fl_flags variable in dlm_posix_unlock Jeff Layton
2024-01-25 10:42 ` [PATCH v2 04/41] nfs: rename fl_flags variable in nfs4_proc_unlck Jeff Layton
2024-01-25 10:42 ` [PATCH v2 05/41] nfsd: rename fl_type and fl_flags variables in nfsd4_lock Jeff Layton
2024-01-25 10:42 ` [PATCH v2 06/41] lockd: rename fl_flags and fl_type variables in nlmclnt_lock Jeff Layton
2024-01-25 10:42 ` [PATCH v2 07/41] 9p: rename fl_type variable in v9fs_file_do_lock Jeff Layton
2024-01-25 10:42 ` [PATCH v2 08/41] afs: rename fl_type variable in afs_next_locker Jeff Layton
2024-01-25 10:42 ` [PATCH v2 09/41] filelock: drop the IS_* macros Jeff Layton
2024-01-25 10:42 ` [PATCH v2 10/41] filelock: split common fields into struct file_lock_core Jeff Layton
2024-01-25 10:42 ` [PATCH v2 11/41] filelock: add coccinelle scripts to move fields to " Jeff Layton
2024-01-25 10:42 ` [PATCH v2 12/41] filelock: have fs/locks.c deal with file_lock_core directly Jeff Layton
2024-01-25 10:42 ` [PATCH v2 13/41] filelock: convert some internal functions to use file_lock_core instead Jeff Layton
2024-01-25 10:42 ` [PATCH v2 14/41] filelock: convert more internal functions to use file_lock_core Jeff Layton
2024-01-25 10:42 ` [PATCH v2 15/41] filelock: make posix_same_owner take file_lock_core pointers Jeff Layton
2024-01-25 10:42 ` [PATCH v2 16/41] filelock: convert posix_owner_key to take file_lock_core arg Jeff Layton
2024-01-25 10:42 ` [PATCH v2 17/41] filelock: make locks_{insert,delete}_global_locks " Jeff Layton
2024-01-25 10:42 ` [PATCH v2 18/41] filelock: convert locks_{insert,delete}_global_blocked Jeff Layton
2024-01-25 10:43 ` [PATCH v2 19/41] filelock: make __locks_delete_block and __locks_wake_up_blocks take file_lock_core Jeff Layton
2024-01-25 10:43 ` [PATCH v2 20/41] filelock: convert __locks_insert_block, conflict and deadlock checks to use file_lock_core Jeff Layton
2024-01-25 10:43 ` [PATCH v2 21/41] filelock: convert fl_blocker to file_lock_core Jeff Layton
2024-01-25 10:43 ` [PATCH v2 22/41] filelock: clean up locks_delete_block internals Jeff Layton
2024-01-25 10:43 ` [PATCH v2 23/41] filelock: reorganize locks_delete_block and __locks_insert_block Jeff Layton
2024-01-25 10:43 ` [PATCH v2 24/41] filelock: make assign_type helper take a file_lock_core pointer Jeff Layton
2024-01-25 10:43 ` [PATCH v2 25/41] filelock: convert locks_wake_up_blocks to " Jeff Layton
2024-01-25 10:43 ` [PATCH v2 26/41] filelock: convert locks_insert_lock_ctx and locks_delete_lock_ctx Jeff Layton
2024-01-25 10:43 ` [PATCH v2 27/41] filelock: convert locks_translate_pid to take file_lock_core Jeff Layton
2024-01-25 10:43 ` [PATCH v2 28/41] filelock: convert seqfile handling to use file_lock_core Jeff Layton
2024-01-25 10:43 ` [PATCH v2 29/41] 9p: adapt to breakup of struct file_lock Jeff Layton
2024-01-25 10:43 ` [PATCH v2 30/41] afs: " Jeff Layton
2024-01-25 10:43 ` [PATCH v2 31/41] ceph: " Jeff Layton
2024-01-25 10:43 ` [PATCH v2 32/41] dlm: " Jeff Layton
2024-01-25 10:43 ` [PATCH v2 33/41] gfs2: " Jeff Layton
2024-01-25 10:43 ` [PATCH v2 34/41] lockd: " Jeff Layton
2024-01-25 10:43 ` [PATCH v2 35/41] nfs: " Jeff Layton
2024-01-25 10:43 ` [PATCH v2 36/41] nfsd: " Jeff Layton
2024-01-25 10:43 ` [PATCH v2 37/41] ocfs2: " Jeff Layton
2024-01-25 10:43 ` [PATCH v2 38/41] smb/client: " Jeff Layton
2024-01-25 10:43 ` Jeff Layton [this message]
2024-01-25 10:43 ` [PATCH v2 40/41] filelock: remove temporary compatability macros Jeff Layton
2024-01-25 10:43 ` [PATCH v2 41/41] filelock: split leases out of struct file_lock Jeff Layton
2024-01-25 14:57 ` [PATCH v2 00/41] filelock: split struct file_lock into file_lock and file_lease structs Chuck Lever
2024-01-25 17:00 ` Jeff Layton
2024-01-25 22:34 ` NeilBrown
2024-01-25 23:58 ` Jeff Layton
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=20240125-flsplit-v2-39-7485322b62c7@kernel.org \
--to=jlayton@kernel.org \
--cc=Dai.Ngo@oracle.com \
--cc=aahringo@redhat.com \
--cc=agruenba@redhat.com \
--cc=anna@kernel.org \
--cc=asmadeus@codewreck.org \
--cc=brauner@kernel.org \
--cc=ceph-devel@vger.kernel.org \
--cc=chuck.lever@oracle.com \
--cc=dhowells@redhat.com \
--cc=ericvh@kernel.org \
--cc=gfs2@lists.linux.dev \
--cc=idryomov@gmail.com \
--cc=jack@suse.cz \
--cc=jlbec@evilplan.org \
--cc=joseph.qi@linux.alibaba.com \
--cc=kolga@netapp.com \
--cc=linkinjeon@kernel.org \
--cc=linux-afs@lists.infradead.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=linux_oss@crudebyte.com \
--cc=lucho@ionkov.net \
--cc=marc.dionne@auristor.com \
--cc=mark@fasheh.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=miklos@szeredi.hu \
--cc=neilb@suse.de \
--cc=ocfs2-devel@lists.linux.dev \
--cc=pc@manguebit.com \
--cc=ronniesahlberg@gmail.com \
--cc=rostedt@goodmis.org \
--cc=senozhatsky@chromium.org \
--cc=sfrench@samba.org \
--cc=sprasad@microsoft.com \
--cc=teigland@redhat.com \
--cc=tom@talpey.com \
--cc=trond.myklebust@hammerspace.com \
--cc=v9fs@lists.linux.dev \
--cc=viro@zeniv.linux.org.uk \
--cc=xiubli@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).