Hi all
The test for VM_CAN_NONLINEAR always fails
Signed-off-by: Yan Zheng<yanzheng@21cn.com>
----
diff -ur linux-2.6.23-rc9/mm/fremap.c linux/mm/fremap.c
--- linux-2.6.23-rc9/mm/fremap.c 2007-10-07 15:03:33.000000000 +0800
+++ linux/mm/fremap.c 2007-10-08 19:33:44.000000000 +0800
@@ -160,7 +160,7 @@
if (vma->vm_private_data && !(vma->vm_flags & VM_NONLINEAR))
goto out;- if (!vma->vm_flags & VM_CAN_NONLINEAR)
+ if (!(vma->vm_flags & VM_CAN_NONLINEAR))
goto out;if (end <= start || start < vma->vm_start || end > vma->vm_end)
-
Good catch indeed. Though I was puzzled how we do nonlinear at all,
until I realized it's "The test for not VM_CAN_NONLINEAR always fails".It's not as serious as it appears, since code further down has been
added more recently to simulate nonlinear on non-RAM-backed filesystems,
instead of going the real nonlinear way; so most filesystems are now not
required to do what VM_CAN_NONLINEAR was put in to ensure they could do.I'm confused as to where that leaves us: is this actually a fix that
needs to go into 2.6.23? or will it suddenly disable a system call
which has been silently working fine on various filesystems which did
not add VM_CAN_NONLINEAR? could we just rip out VM_CAN_NONLINEAR?
I hope Nick or Miklos is clearer on what the risks are.(Apologies for all the "not"s and "non"s here, I'm embarrassed
after just criticizing Ingo's SCHED_NO_NO_OMIT_FRAME_POINTER!)-
Well, I think all filesystems can do VM_CAN_NONLINEAR anyway. Device
We probably should keep VM_CAN_NONLINEAR for the moment, I think.
But now that we have the fallback path, we _could_ use that instead of
failing. I doubt anybody will be using nonlinear mappings on anything but
regular files for the time being, but as a trivial fix, I think this probably
should go into 2.6.23.Thanks for spotting this problem
-
Yes, I mean "The test for not VM_CAN_NONLINEAR always fails". please
forgive my poor English.
-
Lovely. From this we can deduce that nobody has run remap_file_pages() since
2.6.23-rc1 and that nobody (including the developer who made that change) ran it
while that change was in -mm.I'm surprise that LTP doesn't have any remap_file_pages() tests.
Have you runtime tested this change?
Thanks.
-
But you'd be wrong. remap_file_pages was tested both with my own tester
and Ingo's test program.vm_flags != 0, !vm_flags = 0, 0 & x = 0, so the test always falls
through. Of course, what I _should_ have done is also test a driver which
does not have VM_CAN_NONLINEAR... but even I wouldn't rewrite half
the nonlinear mapping code without once testing it ;)FWIW, Oracle (maybe the sole real user of this) has been testing it, which
I'm very happy about (rather than testing after 2.6.23 is released).
-
I've run rmap-test with -M (use remap_file_pages) and
remap-test from ext3-tools, but not remap_file_pages for some reason.I'll now add remap_file_pages soon.
Maybe those other 2 tests aren't strong enough (?).
Or maybe they don't return a non-0 exit status even when they fail...---
~Randy
-
On Mon, 8 Oct 2007 10:28:43 -0700
Me either. There are a few lying around the place which could be
integrated.It would be good if LTP were to have some remap_file_pages() tests
(please). As we see here, it is something which we can easily break, and
leave broken for some time.-
I found it by review, only do test to check remap_file_pages works
when VM_CAN_NONLINEAR flags is set.
-
Was probably found by review. Otherwise, you could probably reproduce
it by mmaping, say, drm device node, running remap_file_pages() on it
to create a nonlinear mapping, and then finding that you get the wrongHere is Ingo's old test, since cleaned up and fixed a bit by me....
I'm sure he would distribute it GPL, but I've cc'ed him because I didn't
find an explicit statement about that.
Good catch!
! operator has higher priority than & operator.
-
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Heiko Carstens | Re: -mm merge plans for 2.6.23 -- sys_fallocate |
git: | |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Jarek Poplawski | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | Re: [GIT]: Networking |
| Jarek Poplawski | [PATCH iproute2] Re: HTB accuracy for high speed |
