1. 04 10月, 2006 1 次提交
  2. 01 10月, 2006 21 次提交
  3. 30 9月, 2006 15 次提交
  4. 27 9月, 2006 3 次提交
    • T
      [PATCH] inode-diet: Eliminate i_blksize from the inode structure · ba52de12
      Theodore Ts'o 提交于
      This eliminates the i_blksize field from struct inode.  Filesystems that want
      to provide a per-inode st_blksize can do so by providing their own getattr
      routine instead of using the generic_fillattr() function.
      
      Note that some filesystems were providing pretty much random (and incorrect)
      values for i_blksize.
      
      [bunk@stusta.de: cleanup]
      [akpm@osdl.org: generic_fillattr() fix]
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ba52de12
    • D
      [PATCH] NOMMU: Make futexes work under NOMMU conditions · 930e652a
      David Howells 提交于
      Make futexes work under NOMMU conditions.
      
      This can be tested by running this in one shell:
      
      	#define SYSERROR(X, Y) \
      		do { if ((long)(X) == -1L) { perror(Y); exit(1); }} while(0)
      
      	int main()
      	{
      		int shmid, tmp, *f, n;
      
      		shmid = shmget(23, 4, IPC_CREAT|0666);
      		SYSERROR(shmid, "shmget");
      
      		f = shmat(shmid, NULL, 0);
      		SYSERROR(f, "shmat");
      
      		n = *f;
      		printf("WAIT: %p{%x}\n", f, n);
      		tmp = futex(f, FUTEX_WAIT, n, NULL, NULL, 0);
      		SYSERROR(tmp, "futex");
      		printf("WAITED: %d\n", tmp);
      
      		tmp = shmdt(f);
      		SYSERROR(tmp, "shmdt");
      
      		exit(0);
      	}
      
      And then this in the other shell:
      
      	#define SYSERROR(X, Y) \
      		do { if ((long)(X) == -1L) { perror(Y); exit(1); }} while(0)
      
      	int main()
      	{
      		int shmid, tmp, *f;
      
      		shmid = shmget(23, 4, IPC_CREAT|0666);
      		SYSERROR(shmid, "shmget");
      
      		f = shmat(shmid, NULL, 0);
      		SYSERROR(f, "shmat");
      
      		(*f)++;
      		printf("WAKE: %p{%x}\n", f, *f);
      		tmp = futex(f, FUTEX_WAKE, 1, NULL, NULL, 0);
      		SYSERROR(tmp, "futex");
      		printf("WOKE: %d\n", tmp);
      
      		tmp = shmdt(f);
      		SYSERROR(tmp, "shmdt");
      
      		exit(0);
      	}
      
      The first program will set up a SYSV IPC SHM segment and wait on a futex in it
      for the number at the start to change.  The program will increment that number
      and wake the first program up.  This leads to output of the form:
      
      	SHELL 1			SHELL 2
      	=======================	=======================
      	# /dowait
      	WAIT: 0xc32ac000{0}
      				# /dowake
      				WAKE: 0xc32ac000{1}
      	WAITED: 0		WOKE: 1
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      930e652a
    • D
      [PATCH] NOMMU: Make mremap() partially work for NOMMU kernels · 6fa5f80b
      David Howells 提交于
      Make mremap() partially work for NOMMU kernels.  It may resize a VMA provided
      that it doesn't exceed the size of the slab object in which the storage is
      allocated that the VMA refers to.  Shareable VMAs may not be resized.
      
      Moving VMAs (as permitted by MREMAP_MAYMOVE) is not currently supported.
      
      This patch also makes use of the fact that the VMA list is now ordered to cut
      it short when possible.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      6fa5f80b