Re: [lustre-devel] [PATCH v3] staging: lustre: Change return type to vm_fault_t
On Thu, Jun 14 2018, Souptick Joarder wrote: > On Thu, Jun 14, 2018 at 12:59 PM, NeilBrown wrote: >> On Tue, Jun 12 2018, Souptick Joarder wrote: >> >>> On 12-Jun-2018 2:21 AM, "Greg KH" wrote: On Tue, Jun 12, 2018 at 02:00:47AM +0530, Souptick Joarder wrote: > On Mon, May 21, 2018 at 11:39 PM, Souptick Joarder > > If no further comment, we would like to get this patch in 4.18-rc-X. Why? Is it a regression fix? That's all that is allowed after -rc1. >>> >>> No, this is not regression fix. We need to get this into 4.18-rc-1. But >>> mostly it can't make into linus tree in rc-1 :) And have you tried applying it to Linus's current tree? :) >>> >>> Last tested on 4.17-rc-6 and it worked fine. Let me verify in current tree. >>> >> >> As you have undoubtedly noticed, lustre is no longer in Linus' tree. >> I'm experimenting with maintaining a branch which retains the code >> (lustre/* in github.com/neilbrown/linux) so we can get it ready for >> merging properly. >> I've added you patch to my tree. > > You need to add this patch in your tree as well. > https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?h=next-20180614=1c8f422059ae5da07db7406ab916203f9417e396 > > This patch appears to be missing in your github branch. ?? That patch is in 4.17-rc1 (v4.17-rc1~99^2~6) and my lustre trees are based on 4.17 (at least). My 'master' might be a bit behind - maybe that confused you. Thanks, NeilBrown signature.asc Description: PGP signature ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [lustre-devel] [PATCH v3] staging: lustre: Change return type to vm_fault_t
On Thu, Jun 14, 2018 at 12:59 PM, NeilBrown wrote: > On Tue, Jun 12 2018, Souptick Joarder wrote: > >> On 12-Jun-2018 2:21 AM, "Greg KH" wrote: >>> >>> On Tue, Jun 12, 2018 at 02:00:47AM +0530, Souptick Joarder wrote: >>> > On Mon, May 21, 2018 at 11:39 PM, Souptick Joarder >>> > >>> > If no further comment, we would like to get this patch in 4.18-rc-X. >>> >>> Why? Is it a regression fix? That's all that is allowed after -rc1. >> >> No, this is not regression fix. We need to get this into 4.18-rc-1. But >> mostly it can't make into linus tree in rc-1 :) >>> >>> And have you tried applying it to Linus's current tree? :) >> >> Last tested on 4.17-rc-6 and it worked fine. Let me verify in current tree. >> > > As you have undoubtedly noticed, lustre is no longer in Linus' tree. > I'm experimenting with maintaining a branch which retains the code > (lustre/* in github.com/neilbrown/linux) so we can get it ready for > merging properly. > I've added you patch to my tree. You need to add this patch in your tree as well. https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?h=next-20180614=1c8f422059ae5da07db7406ab916203f9417e396 This patch appears to be missing in your github branch. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [lustre-devel] [PATCH v3] staging: lustre: Change return type to vm_fault_t
On Tue, Jun 12 2018, Souptick Joarder wrote: > On 12-Jun-2018 2:21 AM, "Greg KH" wrote: >> >> On Tue, Jun 12, 2018 at 02:00:47AM +0530, Souptick Joarder wrote: >> > On Mon, May 21, 2018 at 11:39 PM, Souptick Joarder >> > >> > If no further comment, we would like to get this patch in 4.18-rc-X. >> >> Why? Is it a regression fix? That's all that is allowed after -rc1. > > No, this is not regression fix. We need to get this into 4.18-rc-1. But > mostly it can't make into linus tree in rc-1 :) >> >> And have you tried applying it to Linus's current tree? :) > > Last tested on 4.17-rc-6 and it worked fine. Let me verify in current tree. > As you have undoubtedly noticed, lustre is no longer in Linus' tree. I'm experimenting with maintaining a branch which retains the code (lustre/* in github.com/neilbrown/linux) so we can get it ready for merging properly. I've added you patch to my tree. Thanks, NeilBrown signature.asc Description: PGP signature ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v3] staging: lustre: Change return type to vm_fault_t
On Tue, Jun 12, 2018 at 2:37 AM, Greg KH wrote: > On Tue, Jun 12, 2018 at 02:30:27AM +0530, Souptick Joarder wrote: >> > > >> > > If no further comment, we would like to get this patch in 4.18-rc-X. >> > >> > Why? Is it a regression fix? That's all that is allowed after -rc1. >> >> No, this is not regression fix. We need to get this into 4.18-rc-1. But >> mostly it can't make into linus tree in rc-1 :) > > Why does it _have_ to get into 4.18-rc1? My tree is long-closed and > Linus already has all of my patches in his tree for the staging section > of the kernel. > >> > And have you tried applying it to Linus's current tree? :) >> >> Last tested on 4.17-rc-6 and it worked fine. Let me verify in current tree. > > Try it, you might be surprised :) Yes, got the surprise :) Sorry for making noise, I will drop this patch as it is no more valid in current Linus's tree. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v3] staging: lustre: Change return type to vm_fault_t
On Tue, Jun 12, 2018 at 02:30:27AM +0530, Souptick Joarder wrote: > > > > > > If no further comment, we would like to get this patch in 4.18-rc-X. > > > > Why? Is it a regression fix? That's all that is allowed after -rc1. > > No, this is not regression fix. We need to get this into 4.18-rc-1. But > mostly it can't make into linus tree in rc-1 :) Why does it _have_ to get into 4.18-rc1? My tree is long-closed and Linus already has all of my patches in his tree for the staging section of the kernel. > > And have you tried applying it to Linus's current tree? :) > > Last tested on 4.17-rc-6 and it worked fine. Let me verify in current tree. Try it, you might be surprised :) greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v3] staging: lustre: Change return type to vm_fault_t
On Tue, Jun 12, 2018 at 02:00:47AM +0530, Souptick Joarder wrote: > On Mon, May 21, 2018 at 11:39 PM, Souptick Joarder > wrote: > > Use new return type vm_fault_t for fault handler. For > > now, this is just documenting that the function returns > > a VM_FAULT value rather than an errno. Once all instances > > are converted, vm_fault_t will become a distinct type. > > > > Ref-> commit 1c8f422059ae ("mm: change return type to > > vm_fault_t") was added in 4.17-rc1 to introduce the new > > typedef vm_fault_t. Currently we are making change to all > > drivers to return vm_fault_t for page fault handlers. As > > part of that lustre driver is also getting changed to > > return vm_fault_t type. > > > > Signed-off-by: Souptick Joarder > > --- > > v2: updated the change log > > > > v3: updated the change log > > > > drivers/staging/lustre/lustre/llite/llite_mmap.c | 35 > > > > 1 file changed, 18 insertions(+), 17 deletions(-) > > > > diff --git a/drivers/staging/lustre/lustre/llite/llite_mmap.c > > b/drivers/staging/lustre/lustre/llite/llite_mmap.c > > index c0533bd..5b8fd10 100644 > > --- a/drivers/staging/lustre/lustre/llite/llite_mmap.c > > +++ b/drivers/staging/lustre/lustre/llite/llite_mmap.c > > @@ -231,7 +231,7 @@ static int ll_page_mkwrite0(struct vm_area_struct *vma, > > struct page *vmpage, > > return result; > > } > > > > -static inline int to_fault_error(int result) > > +static inline vm_fault_t to_fault_error(int result) > > { > > switch (result) { > > case 0: > > @@ -261,7 +261,7 @@ static inline int to_fault_error(int result) > > * \retval VM_FAULT_ERROR on general error > > * \retval NOPAGE_OOM not have memory for allocate new page > > */ > > -static int ll_fault0(struct vm_area_struct *vma, struct vm_fault *vmf) > > +static vm_fault_t ll_fault0(struct vm_area_struct *vma, struct vm_fault > > *vmf) > > { > > struct lu_env *env; > > struct cl_io*io; > > @@ -269,16 +269,16 @@ static int ll_fault0(struct vm_area_struct *vma, > > struct vm_fault *vmf) > > struct page *vmpage; > > unsigned long ra_flags; > > int result = 0; > > - int fault_ret = 0; > > + vm_fault_t fault_ret = 0; > > u16 refcheck; > > > > env = cl_env_get(); > > if (IS_ERR(env)) > > - return PTR_ERR(env); > > + return VM_FAULT_ERROR; > > > > io = ll_fault_io_init(env, vma, vmf->pgoff, _flags); > > if (IS_ERR(io)) { > > - result = to_fault_error(PTR_ERR(io)); > > + fault_ret = to_fault_error(PTR_ERR(io)); > > goto out; > > } > > > > @@ -319,15 +319,15 @@ static int ll_fault0(struct vm_area_struct *vma, > > struct vm_fault *vmf) > > if (result != 0 && !(fault_ret & VM_FAULT_RETRY)) > > fault_ret |= to_fault_error(result); > > > > - CDEBUG(D_MMAP, "%s fault %d/%d\n", current->comm, fault_ret, > > result); > > + CDEBUG(D_MMAP, "%s fault %x/%d\n", current->comm, fault_ret, > > result); > > return fault_ret; > > } > > > > -static int ll_fault(struct vm_fault *vmf) > > +static vm_fault_t ll_fault(struct vm_fault *vmf) > > { > > int count = 0; > > bool printed = false; > > - int result; > > + vm_fault_t result; > > sigset_t set; > > > > /* Only SIGKILL and SIGTERM are allowed for fault/nopage/mkwrite > > @@ -364,18 +364,19 @@ static int ll_fault(struct vm_fault *vmf) > > return result; > > } > > > > -static int ll_page_mkwrite(struct vm_fault *vmf) > > +static vm_fault_t ll_page_mkwrite(struct vm_fault *vmf) > > { > > struct vm_area_struct *vma = vmf->vma; > > int count = 0; > > bool printed = false; > > bool retry; > > - int result; > > + int err; > > + vm_fault_t ret; > > > > file_update_time(vma->vm_file); > > do { > > retry = false; > > - result = ll_page_mkwrite0(vma, vmf->page, ); > > + err = ll_page_mkwrite0(vma, vmf->page, ); > > > > if (!printed && ++count > 16) { > > const struct dentry *de = > > vma->vm_file->f_path.dentry; > > @@ -387,25 +388,25 @@ static int ll_page_mkwrite(struct vm_fault *vmf) > > } > > } while (retry); > > > > - switch (result) { > > + switch (err) { > > case 0: > > LASSERT(PageLocked(vmf->page)); > > - result = VM_FAULT_LOCKED; > > + ret = VM_FAULT_LOCKED; > > break; > > case -ENODATA: > > case -EAGAIN: > > case -EFAULT: > > - result = VM_FAULT_NOPAGE; > > + ret = VM_FAULT_NOPAGE; > > break; > > case -ENOMEM: > > - result = VM_FAULT_OOM; > > +
Re: [PATCH v3] staging: lustre: Change return type to vm_fault_t
On Mon, May 21, 2018 at 11:39 PM, Souptick Joarder wrote: > Use new return type vm_fault_t for fault handler. For > now, this is just documenting that the function returns > a VM_FAULT value rather than an errno. Once all instances > are converted, vm_fault_t will become a distinct type. > > Ref-> commit 1c8f422059ae ("mm: change return type to > vm_fault_t") was added in 4.17-rc1 to introduce the new > typedef vm_fault_t. Currently we are making change to all > drivers to return vm_fault_t for page fault handlers. As > part of that lustre driver is also getting changed to > return vm_fault_t type. > > Signed-off-by: Souptick Joarder > --- > v2: updated the change log > > v3: updated the change log > > drivers/staging/lustre/lustre/llite/llite_mmap.c | 35 > > 1 file changed, 18 insertions(+), 17 deletions(-) > > diff --git a/drivers/staging/lustre/lustre/llite/llite_mmap.c > b/drivers/staging/lustre/lustre/llite/llite_mmap.c > index c0533bd..5b8fd10 100644 > --- a/drivers/staging/lustre/lustre/llite/llite_mmap.c > +++ b/drivers/staging/lustre/lustre/llite/llite_mmap.c > @@ -231,7 +231,7 @@ static int ll_page_mkwrite0(struct vm_area_struct *vma, > struct page *vmpage, > return result; > } > > -static inline int to_fault_error(int result) > +static inline vm_fault_t to_fault_error(int result) > { > switch (result) { > case 0: > @@ -261,7 +261,7 @@ static inline int to_fault_error(int result) > * \retval VM_FAULT_ERROR on general error > * \retval NOPAGE_OOM not have memory for allocate new page > */ > -static int ll_fault0(struct vm_area_struct *vma, struct vm_fault *vmf) > +static vm_fault_t ll_fault0(struct vm_area_struct *vma, struct vm_fault *vmf) > { > struct lu_env *env; > struct cl_io*io; > @@ -269,16 +269,16 @@ static int ll_fault0(struct vm_area_struct *vma, struct > vm_fault *vmf) > struct page *vmpage; > unsigned long ra_flags; > int result = 0; > - int fault_ret = 0; > + vm_fault_t fault_ret = 0; > u16 refcheck; > > env = cl_env_get(); > if (IS_ERR(env)) > - return PTR_ERR(env); > + return VM_FAULT_ERROR; > > io = ll_fault_io_init(env, vma, vmf->pgoff, _flags); > if (IS_ERR(io)) { > - result = to_fault_error(PTR_ERR(io)); > + fault_ret = to_fault_error(PTR_ERR(io)); > goto out; > } > > @@ -319,15 +319,15 @@ static int ll_fault0(struct vm_area_struct *vma, struct > vm_fault *vmf) > if (result != 0 && !(fault_ret & VM_FAULT_RETRY)) > fault_ret |= to_fault_error(result); > > - CDEBUG(D_MMAP, "%s fault %d/%d\n", current->comm, fault_ret, result); > + CDEBUG(D_MMAP, "%s fault %x/%d\n", current->comm, fault_ret, result); > return fault_ret; > } > > -static int ll_fault(struct vm_fault *vmf) > +static vm_fault_t ll_fault(struct vm_fault *vmf) > { > int count = 0; > bool printed = false; > - int result; > + vm_fault_t result; > sigset_t set; > > /* Only SIGKILL and SIGTERM are allowed for fault/nopage/mkwrite > @@ -364,18 +364,19 @@ static int ll_fault(struct vm_fault *vmf) > return result; > } > > -static int ll_page_mkwrite(struct vm_fault *vmf) > +static vm_fault_t ll_page_mkwrite(struct vm_fault *vmf) > { > struct vm_area_struct *vma = vmf->vma; > int count = 0; > bool printed = false; > bool retry; > - int result; > + int err; > + vm_fault_t ret; > > file_update_time(vma->vm_file); > do { > retry = false; > - result = ll_page_mkwrite0(vma, vmf->page, ); > + err = ll_page_mkwrite0(vma, vmf->page, ); > > if (!printed && ++count > 16) { > const struct dentry *de = vma->vm_file->f_path.dentry; > @@ -387,25 +388,25 @@ static int ll_page_mkwrite(struct vm_fault *vmf) > } > } while (retry); > > - switch (result) { > + switch (err) { > case 0: > LASSERT(PageLocked(vmf->page)); > - result = VM_FAULT_LOCKED; > + ret = VM_FAULT_LOCKED; > break; > case -ENODATA: > case -EAGAIN: > case -EFAULT: > - result = VM_FAULT_NOPAGE; > + ret = VM_FAULT_NOPAGE; > break; > case -ENOMEM: > - result = VM_FAULT_OOM; > + ret = VM_FAULT_OOM; > break; > default: > - result = VM_FAULT_SIGBUS; > + ret = VM_FAULT_SIGBUS; > break; > } > > - return result; > + return ret; > } > > /** > -- > 1.9.1 > If no further comment, we would like to get this patch in 4.18-rc-X.
[PATCH v3] staging: lustre: Change return type to vm_fault_t
Use new return type vm_fault_t for fault handler. For now, this is just documenting that the function returns a VM_FAULT value rather than an errno. Once all instances are converted, vm_fault_t will become a distinct type. Ref-> commit 1c8f422059ae ("mm: change return type to vm_fault_t") was added in 4.17-rc1 to introduce the new typedef vm_fault_t. Currently we are making change to all drivers to return vm_fault_t for page fault handlers. As part of that lustre driver is also getting changed to return vm_fault_t type. Signed-off-by: Souptick Joarder--- v2: updated the change log v3: updated the change log drivers/staging/lustre/lustre/llite/llite_mmap.c | 35 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/drivers/staging/lustre/lustre/llite/llite_mmap.c b/drivers/staging/lustre/lustre/llite/llite_mmap.c index c0533bd..5b8fd10 100644 --- a/drivers/staging/lustre/lustre/llite/llite_mmap.c +++ b/drivers/staging/lustre/lustre/llite/llite_mmap.c @@ -231,7 +231,7 @@ static int ll_page_mkwrite0(struct vm_area_struct *vma, struct page *vmpage, return result; } -static inline int to_fault_error(int result) +static inline vm_fault_t to_fault_error(int result) { switch (result) { case 0: @@ -261,7 +261,7 @@ static inline int to_fault_error(int result) * \retval VM_FAULT_ERROR on general error * \retval NOPAGE_OOM not have memory for allocate new page */ -static int ll_fault0(struct vm_area_struct *vma, struct vm_fault *vmf) +static vm_fault_t ll_fault0(struct vm_area_struct *vma, struct vm_fault *vmf) { struct lu_env *env; struct cl_io*io; @@ -269,16 +269,16 @@ static int ll_fault0(struct vm_area_struct *vma, struct vm_fault *vmf) struct page *vmpage; unsigned long ra_flags; int result = 0; - int fault_ret = 0; + vm_fault_t fault_ret = 0; u16 refcheck; env = cl_env_get(); if (IS_ERR(env)) - return PTR_ERR(env); + return VM_FAULT_ERROR; io = ll_fault_io_init(env, vma, vmf->pgoff, _flags); if (IS_ERR(io)) { - result = to_fault_error(PTR_ERR(io)); + fault_ret = to_fault_error(PTR_ERR(io)); goto out; } @@ -319,15 +319,15 @@ static int ll_fault0(struct vm_area_struct *vma, struct vm_fault *vmf) if (result != 0 && !(fault_ret & VM_FAULT_RETRY)) fault_ret |= to_fault_error(result); - CDEBUG(D_MMAP, "%s fault %d/%d\n", current->comm, fault_ret, result); + CDEBUG(D_MMAP, "%s fault %x/%d\n", current->comm, fault_ret, result); return fault_ret; } -static int ll_fault(struct vm_fault *vmf) +static vm_fault_t ll_fault(struct vm_fault *vmf) { int count = 0; bool printed = false; - int result; + vm_fault_t result; sigset_t set; /* Only SIGKILL and SIGTERM are allowed for fault/nopage/mkwrite @@ -364,18 +364,19 @@ static int ll_fault(struct vm_fault *vmf) return result; } -static int ll_page_mkwrite(struct vm_fault *vmf) +static vm_fault_t ll_page_mkwrite(struct vm_fault *vmf) { struct vm_area_struct *vma = vmf->vma; int count = 0; bool printed = false; bool retry; - int result; + int err; + vm_fault_t ret; file_update_time(vma->vm_file); do { retry = false; - result = ll_page_mkwrite0(vma, vmf->page, ); + err = ll_page_mkwrite0(vma, vmf->page, ); if (!printed && ++count > 16) { const struct dentry *de = vma->vm_file->f_path.dentry; @@ -387,25 +388,25 @@ static int ll_page_mkwrite(struct vm_fault *vmf) } } while (retry); - switch (result) { + switch (err) { case 0: LASSERT(PageLocked(vmf->page)); - result = VM_FAULT_LOCKED; + ret = VM_FAULT_LOCKED; break; case -ENODATA: case -EAGAIN: case -EFAULT: - result = VM_FAULT_NOPAGE; + ret = VM_FAULT_NOPAGE; break; case -ENOMEM: - result = VM_FAULT_OOM; + ret = VM_FAULT_OOM; break; default: - result = VM_FAULT_SIGBUS; + ret = VM_FAULT_SIGBUS; break; } - return result; + return ret; } /** -- 1.9.1 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel