From: "J. Bruce Fields" Subject: Re: [PATCH 1/3] enhanced ESTALE error handling Date: Fri, 18 Jan 2008 12:18:05 -0500 Message-ID: <20080118171805.GA15158@fieldses.org> References: <4790C761.1010603@redhat.com> <20080118161443.GB20490@parisc-linux.org> <4790D7C0.30402@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Matthew Wilcox , Linux Kernel Mailing List , linux-nfs@vger.kernel.org, Andrew Morton , Trond Myklebust , linux-fsdevel To: Peter Staubach Return-path: In-Reply-To: <4790D7C0.30402@redhat.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Fri, Jan 18, 2008 at 11:45:52AM -0500, Peter Staubach wrote: > Matthew Wilcox wrote: >> On Fri, Jan 18, 2008 at 10:36:01AM -0500, Peter Staubach wrote: >>> static int path_lookup_create(int dfd, const char *name, >>> - unsigned int lookup_flags, struct nameidata *nd, >>> - int open_flags, int create_mode) >>> + unsigned int lookup_flags, struct nameidata *nd, >>> + int open_flags, int create_mode) >>> >> >> Gratuitous reformatting? >> >> > > Elimination of an overly long line? I usually try to gather any coding style, comment grammar, etc., fixes into a single patch or two at the beginning of a series. That keeps the substantive patches (the hardest to understand) shorter. --b. > >>> @@ -1712,7 +1729,10 @@ int open_namei(int dfd, const char *path >>> int acc_mode, error; >>> struct path path; >>> struct dentry *dir; >>> - int count = 0; >>> + int count; >>> + >>> +top: >>> + count = 0; >>> acc_mode = ACC_MODE(flag); >>> @@ -1739,7 +1759,8 @@ int open_namei(int dfd, const char *path >>> /* >>> * Create - we need to know the parent. >>> */ >>> - error = path_lookup_create(dfd,pathname,LOOKUP_PARENT,nd,flag,mode); >>> + error = path_lookup_create(dfd, pathname, LOOKUP_PARENT, nd, >>> + flag, mode); >>> if (error) >>> return error; >>> @@ -1812,10 +1833,17 @@ ok: >>> return 0; >>> exit_dput: >>> + if (error == -ESTALE) >>> + d_drop(path.dentry); >>> dput_path(&path, nd); >>> exit: >>> if (!IS_ERR(nd->intent.open.file)) >>> release_open_intent(nd); >>> + if (error == -ESTALE) { >>> + d_drop(nd->dentry); >>> + path_release(nd); >>> + goto top; >>> + } >>> >> >> I wonder if a tail-call might not work better here. > > "Tail-call"? > > Thanx... > > ps > - > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html