From patchwork Wed Aug 6 13:33:25 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kinglong Mee X-Patchwork-Id: 4686211 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 18FAFC0338 for ; Wed, 6 Aug 2014 13:33:44 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id F2A972010F for ; Wed, 6 Aug 2014 13:33:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 01D0D2010E for ; Wed, 6 Aug 2014 13:33:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751658AbaHFNdk (ORCPT ); Wed, 6 Aug 2014 09:33:40 -0400 Received: from mail-pd0-f170.google.com ([209.85.192.170]:51416 "EHLO mail-pd0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750878AbaHFNdj (ORCPT ); Wed, 6 Aug 2014 09:33:39 -0400 Received: by mail-pd0-f170.google.com with SMTP id g10so3310658pdj.29 for ; Wed, 06 Aug 2014 06:33:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=XgCQtqovuzHxeur5eKwDWpSfMnlluv+H6pqWdt9UbMA=; b=QAQ2lb13SCKzLsXeTCkt0P1HHeJ/dgr5clwroEzPQ3PGhqTq7m/kD9thnkX0+OSvW/ 1QVbethaGuJ0HuROoYKQhOd2ouJ1MREuwX9R3/ZffxnxtpKyIoWc11adUDV6f6c6gXqs eA+UdXYSMybPEseMbdE7yHVPG1kwEzBAZfEGEgyxbM5IPvTbAl7B1Lob4lhU/1aHDz4k Lp2WJOhROIsBGTZtWIt/6NeklakLvxkP0uotd9NKqpr+8QEKcrqs26yNSGo2P9TGJPNV uiq5g0H+BCTWfymxaIoGQAIcdOTBKSyNYJ9/iQTihtDa1+Zrbe8K45qzwZezi+BK6+pW UxEg== X-Received: by 10.70.36.33 with SMTP id n1mr11489926pdj.26.1407332018732; Wed, 06 Aug 2014 06:33:38 -0700 (PDT) Received: from [192.168.0.100] ([110.190.119.243]) by mx.google.com with ESMTPSA id i2sm1802840pdk.70.2014.08.06.06.33.33 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Aug 2014 06:33:37 -0700 (PDT) Message-ID: <53E22EA5.70708@gmail.com> Date: Wed, 06 Aug 2014 21:33:25 +0800 From: Kinglong Mee User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: "J. Bruce Fields" CC: Linux NFS Mailing List , Trond Myklebust , jlayton@redhat.com, kinglongmee@gmail.com, linux-fsdevel@vger.kernel.org Subject: [PATCH 1/3] NFSD: New FL_NFSD for marking file_lock belongs to NFSD References: <53BAAAC5.9000106@gmail.com> In-Reply-To: <53BAAAC5.9000106@gmail.com> Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Using fl_flags instead of fl_lmops for marking file_lock belongs to NFSD. Signed-off-by: Kinglong Mee --- fs/nfsd/nfs4state.c | 15 ++++----------- include/linux/fs.h | 1 + 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 2e80a59..24168ae 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -4867,17 +4867,12 @@ nfs4_transform_lock_offset(struct file_lock *lock) lock->fl_end = OFFSET_MAX; } -/* Hack!: For now, we're defining this just so we can use a pointer to it - * as a unique cookie to identify our (NFSv4's) posix locks. */ -static const struct lock_manager_operations nfsd_posix_mng_ops = { -}; - static inline void nfs4_set_lock_denied(struct file_lock *fl, struct nfsd4_lock_denied *deny) { struct nfs4_lockowner *lo; - if (fl->fl_lmops == &nfsd_posix_mng_ops) { + if (fl->fl_flags & FL_NFSD) { lo = (struct nfs4_lockowner *) fl->fl_owner; deny->ld_owner.data = kmemdup(lo->lo_owner.so_owner.data, lo->lo_owner.so_owner.len, GFP_KERNEL); @@ -5241,8 +5236,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, file_lock->fl_owner = (fl_owner_t)lock_sop; file_lock->fl_pid = current->tgid; file_lock->fl_file = filp; - file_lock->fl_flags = FL_POSIX; - file_lock->fl_lmops = &nfsd_posix_mng_ops; + file_lock->fl_flags = FL_POSIX | FL_NFSD; file_lock->fl_start = lock->lk_offset; file_lock->fl_end = last_byte_offset(lock->lk_offset, lock->lk_length); nfs4_transform_lock_offset(file_lock); @@ -5375,7 +5369,7 @@ nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, if (lo) file_lock->fl_owner = (fl_owner_t)lo; file_lock->fl_pid = current->tgid; - file_lock->fl_flags = FL_POSIX; + file_lock->fl_flags = FL_POSIX | FL_NFSD; file_lock->fl_start = lockt->lt_offset; file_lock->fl_end = last_byte_offset(lockt->lt_offset, lockt->lt_length); @@ -5437,8 +5431,7 @@ nfsd4_locku(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, file_lock->fl_owner = (fl_owner_t)lockowner(stp->st_stateowner); file_lock->fl_pid = current->tgid; file_lock->fl_file = filp; - file_lock->fl_flags = FL_POSIX; - file_lock->fl_lmops = &nfsd_posix_mng_ops; + file_lock->fl_flags = FL_POSIX | FL_NFSD; file_lock->fl_start = locku->lu_offset; file_lock->fl_end = last_byte_offset(locku->lu_offset, diff --git a/include/linux/fs.h b/include/linux/fs.h index e11d60c..4d40097 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -819,6 +819,7 @@ static inline struct file *get_file(struct file *f) #define FL_DOWNGRADE_PENDING 256 /* Lease is being downgraded */ #define FL_UNLOCK_PENDING 512 /* Lease is being broken */ #define FL_OFDLCK 1024 /* lock is "owned" by struct file */ +#define FL_NFSD 2048 /* NFSD holds this lock */ /* * Special return value from posix_lock_file() and vfs_lock_file() for