summaryrefslogtreecommitdiffstats
path: root/fs/gfs2
Commit message (Collapse)AuthorAgeFilesLines
* [GFS2] Fix releasepage bug (fixes direct i/o writes)Steven Whitehouse2006-08-312-4/+40
| | | | | | | | | | | | | | | | | | | This patch fixes three main bugs. Firstly the direct i/o get_block was returning the wrong return code in certain cases. Secondly, the GFS2's releasepage function was not dealing with cases when clean, ordered buffers were found still queued on a transaction (which can happen depending on the ordering of journal flushes). Thirdly, the journaling code itself needed altering to take account of the after effects of removing the clean ordered buffers from the transactions before a journal flush. The releasepage bug did also show up under "normal" buffered i/o as well, so its not just a fix for direct i/o. In fact its not normally used in the direct i/o path at all, except when flushing existing buffers after performing a direct i/o write, but that was the code path that led us to spot this. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Add superblock into key for glock lookupsSteven Whitehouse2006-08-301-3/+6
| | | | | | | | This adds the superblock as a key for glock lookups. Since the glocks are already stored in a per-superblock table, this has no effect at the moment. Later on this will change though. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Use const on glock lookup keySteven Whitehouse2006-08-301-3/+3
| | | | | | | Use const for the glock name which is being used as a lookup key in the glock hash table. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Use slab properly with glocksSteven Whitehouse2006-08-302-28/+34
| | | | | | | | We can take advantage of the slab allocator to ensure that all the list heads and the spinlock (plus one or two other fields) are initialised by slab to speed up allocation of glocks. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Remove unused code from glock layerSteven Whitehouse2006-08-304-12/+0
| | | | | | | | Remove the unused sync feature from glocks. This is currently done by calling the required functions to sync pages/blocks directly so this code isn't needed. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Make glock operations constSteven Whitehouse2006-08-305-38/+38
| | | | | | | For all the usual reasons of enforcing correctness and potentially reducing code size, this patch makes the glock operations const. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Allow mounting of gfs2 and gfs2meta at the same timeAbhijith Das2006-08-254-3/+155
| | | | | | | | | | This patch allows the simultaneous mounting of gfs2meta and gfs2 filesystems. A restriction however is that a gfs2meta fs may only be mounted if its corresponding gfs2 filesystem is also mounted. Also, a gfs2 filesystem cannot be unmounted before its gfs2meta filesystem. Signed-off-by: Abhijith Das <adas@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix journal off-by-one errorBenjamin Marzinski2006-08-251-1/+3
| | | | | | | | | | | | | | | log_refund() incorrectly assumed that if a transaction had been touched, it always committed buffers to the incore log. Thus, when you got around to flushing the log, you would need one more block than you committed, to account for the header. So it automatically set reserved to 1, which had the effect of making sdp->sd_log_blks_reserved one greater when you got to gfs2_log_flush(). However, if you don't actually commit anything to the incore log between flushes, you don't need the header, because you aren't writing anything out. With this patch, log_refund() only increments reservered to account for the header if something has been committed since the last flush. Signed-off-by: Benjamin E. Marzinski <bmarzins@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Speed up scanning of glocksSteven Whitehouse2006-08-243-21/+5
| | | | | | | | | | | | | | | | | | I noticed the gfs2_scand seemed to be taking a lot of CPU, so in order to cut that down a bit, here is a patch. Firstly the type of a glock is a constant during its lifetime, so that its possible to check this without needing locking. I've moved the (common) case of testing for an inode glock outside of the glmutex lock. Also there was a mutex left over from when the glock cache was master of the inode cache. That isn't required any more so I've removed that too. There is probably scope for further speed ups in the future in this area. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Tidy up error handling in gfs2_releasepage()Steven Whitehouse2006-08-241-15/+14
| | | | | | | | This should clarify the logic in gfs2_releasepage() relating to error handling as well as making the response to errors a bit more graceful. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Another list_del bugSteven Whitehouse2006-08-222-8/+5
| | | | | | Another case where list_del should be list_del_init. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix to list_del in lops.cSteven Whitehouse2006-08-221-1/+1
| | | | | | | A list_del should have been a list_del_init in lops.c which was resulting in incorrect status returns from list_empty(). Signed-off-by: Steven Whitheouse <swhiteho@redhat.com>
* [GFS2] Fix leak of gfs2_bufdataSteven Whitehouse2006-08-184-11/+6
| | | | | | | | | | | This fixes a memory leak of struct gfs2_bufdata and also some problems in the ordered write handling code. It needs a bit more testing, but I believe that the reference counting of ordered write buffers should now be correct. This is aimed at fixing Red Hat bugzilla: #201028 and #201082 Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix a couple of refcount leaks.Russell Cattelan2006-08-103-4/+12
| | | | | | | | | | | | | | | | recovery.c add a brelse to deal with gfs2_replay_read_block being called twice on the same block. add a dput to drop the ref count on the root inode. This was causing lingering glocks and thus causing a mount failure to hang. Fix a endian conversion macro that was was swizzling 16bits when it should have been swizzling 32. Signed-off-by: Russell Cattelan <cattelan@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix lack of buffers in writepage bugSteven Whitehouse2006-08-081-2/+6
| | | | | | | | | | | | In some cases we can enter write page without there being buffers attached to the page. In this case the function to add gfs2_bufdata to the buffers fails sliently causing further failures down the stack. This fix ensures that we always add buffers in writepage if they didn't already exist (mmap is one way to trigger this). Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix gfs_ prefix in locking.cSteven Whitehouse2006-08-071-8/+8
| | | | | | | The previous patch didn't change all the gfs_ to gfs2_ so this is the remainder. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] match plock result with correct requestDavid Teigland2006-08-071-1/+2
| | | | | | | | | | When the result of a posix lock request is read it needs to be matched up with the correct waiting request. The owner field needs to be used in the comparison since more than one process may be waiting for locks on the same file. Signed-off-by: David Teigland <teigland@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] lockproto api prefixDavid Teigland2006-08-073-13/+8
| | | | | | | | | Use the gfs2_ prefix on the register/unregister functions for the lock modules. The gfs_ prefix was left from an old idea on how to share these with gfs1. Signed-off-by: David Teigland <teigland@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix lock ordering bug in page fault pathSteven Whitehouse2006-08-045-25/+32
| | | | | | | | | | | | | Mmapped files were able to trigger a lock ordering bug. Private maps do not need to take the glock so early on. Shared maps do unfortunately, however we can get around that by adding a flag into the flags for the struct gfs2_file. This only works because we are taking an exclusive lock at this point, so we know that nobody else can be racing with us. Fixes Red Hat bugzilla: #201196 Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix bug in directory codeSteven Whitehouse2006-08-011-0/+2
| | | | | | | | | This was a nasty bug which resulted in corruption of hash tables in the directory code with larger directories. We forgot to increment a pointer in the read/write routines internal to the directory code. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] add plock ownerDavid Teigland2006-07-311-0/+2
| | | | | | | | | We need to use fl_owner instead of fl_pid to track the owner of a posix lock. Pass the owner value out to user space where cluster plocks are managed. Signed-off-by: David Teigland <teigland@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Tidy up in various filesSteven Whitehouse2006-07-313-40/+12
| | | | | | | Tidy up some files and remove an unused routine in meta_io.h. Also added a bit of extra debugging in meta_io.h. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix bug in clear_inodeSteven Whitehouse2006-07-281-0/+1
| | | | | | | We should have been waiting for lock demotion to finish in clear_inode. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix bug in super block reading codeSteven Whitehouse2006-07-271-1/+3
| | | | | | This gets the argument to submit_bio() correct. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Change some allocations to GFP_NOFSSteven Whitehouse2006-07-271-7/+6
| | | | | | | Some allocations in rgrp.c should have been GFP_NOFS rather than GFP_KERNEL. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Use a bio to read the superblockSteven Whitehouse2006-07-274-35/+64
| | | | | | | | | | This means that we don't need to create a special inode just to contain a struct address_space in order to read a single disk block. Instead we read the disk block directly. Its slightly faster, and uses slightly less memory, but the real reason for doing this is that it removes a special case from the glock code. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Remove page.[ch]Steven Whitehouse2006-07-269-235/+184
| | | | | | | | The remaining routines in page.c were all only used in one other file, so they are now moved into the files where they are referenced and made static. Thus page.[ch] are no longer required. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Tidy gfs2_unstuffer_pageSteven Whitehouse2006-07-267-77/+66
| | | | | | | | | | | | | | Tidy up gfs2_unstuffer_page by: a) Moving it into bmap.c b) Making it static c) Calling it directly from gfs2_unstuff_dinode d) Updating all callers of gfs2_unstuff_dinode due to one less required argument. It doesn't change the behaviour at all. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Alter direct I/O pathSteven Whitehouse2006-07-252-205/+19
| | | | | | | | | | | | As per comments received, alter the GFS2 direct I/O path so that it uses the standard read functions "out of the box". Needs a small change to one of the VFS functions. This reduces the size of the code quite a lot and also removes the need for one new export. Some more work remains to be done, but this is the bones of the thing. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] gfs2_set_flags double locking patchAbhijith Das2006-07-211-4/+1
| | | | | | | | | | traced the "umount hang due to spurious glock" issue that I was having with gfs2meta. It's in the do_gfs2_set_flags function, which does a gfs2_holder_init as well as a gfs2_glock_nq_init (increases ref count by 2 instead of 1). Signed-off-by: Abhijith Das <adas@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] fix typo in locking/dlmDavid Teigland2006-07-211-1/+1
| | | | | | | Typo causes the error value from the wrong lock to be checked. Signed-off-by: David Teigland <teigland@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix endian conversion bugSteven Whitehouse2006-07-171-4/+4
| | | | | | | Fix an endian coversion bug in log.c spotted by Kevin Anderson. Cc: Kevin Anderson <kanderso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix use after free bug in dir.cSteven Whitehouse2006-07-171-3/+2
| | | | | | | Fix a use after free bug in dir.c spotted by Kevin Anderson. Cc: Kevin Anderson <kanderso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] NFS updateWendy Cheng2006-07-132-12/+24
| | | | | | | | Update the NFS filehandles so that they contain the file type. Signed-off-by: Wendy Cheng <wcheng@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix a coupls of warnings in dir.cSteven Whitehouse2006-07-111-2/+2
| | | | | | | Fix a couple of compiler warnings in dir.c caused by potentially uninitialised variables. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [PATCH] patch to init di_payload_format field in gfs2_dinodeAbhijith Das2006-07-111-0/+1
| | | | | | | | A missing initialisation when creating a new on disk inode. Signed-off-by: Abhijith Das <adas@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix deadlock in memory allocationSteven Whitehouse2006-07-111-1/+1
| | | | | | | | | | | | | | We must not call GFP_KERNEL memory allocations while we are holding the log lock (read or write) since that may trigger a log flush resulting in a deadlock. Eventually we need to fix the locking in log.c, for now this solves the problem at the expense of freeing up memory as fast as we would like to. This needs to be revisited later on. Cc: Kevin Anderson <kanderso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Add generation numberSteven Whitehouse2006-07-118-147/+149
| | | | | | | | | | | | | | | | | This adds a generation number for the eventual use of NFS to the ondisk inode. Its backward compatible with the current code since it doesn't really matter what the generation number is to start with, and indeed since its set to zero, due to it being taken from padding in both the inode and rgrp header, it should be fine. The eventual plan is to use this rather than no_formal_ino in the NFS filehandles. At that point no_formal_ino will be unused. At the same time we also add a releasepages call back to the "normal" address space for gfs2 inodes. Also I've removed a one-linrer function thats not required any more. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Bug fix to gfs2_readpages()Steven Whitehouse2006-07-101-5/+5
| | | | | | | | | This fixes a bug where we were releasing a page incorrectly sometimes when reading a stuffed file. This fixes the bug that Kevin reported when using Xen. Cc: Kevin Anderson <kanderso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Remove unused code from dir.cSteven Whitehouse2006-07-101-5/+0
| | | | | | | Remove a couple of commented out, and unused lines of code. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fixes to scanning of glocks (again)Steven Whitehouse2006-07-064-11/+7
| | | | | | | | | | | This really is the correct fix this time. We just ignore all glocks associated with inodes until the inodes are pushed from the inode cache. At that point the glocks are queued for reclaim, so we don't need to do it here. Also fix one or two other minor bugs. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Correct logic in glock scannerSteven Whitehouse2006-07-051-2/+5
| | | | | | | | Under certain circumstances the glock scanning logic would demote locks which ought not to have been selected for demotion. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Add cast for printkSteven Whitehouse2006-07-051-1/+1
| | | | | | Cast a uint64_t to unsigned long long for a printk. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Make GFS2 work with lock validatorSteven Whitehouse2006-07-051-1/+1
| | | | | | | Change our one existing old-style lock initialiser to a new-style one. This allows the lock validator to work as intended. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Fix locking for Direct I/O readsSteven Whitehouse2006-07-051-3/+7
| | | | | | We need to hold i_mutex when doing direct i/o reads. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Mark file_operations constSteven Whitehouse2006-07-032-4/+4
| | | | | | | | | | | As per Arjan's patches: http://www.kernel.org/git/?p=linux/kernel/git/steve/gfs2-2.6.git;a=commitdiff;h=99ac48f54a91d02140c497edc31dc57d4bc5c85d and http://www.kernel.org/git/?p=linux/kernel/git/steve/gfs2-2.6.git;a=commitdiff;h=4b6f5d20b04dcbc3d888555522b90ba6d36c4106 make the GFS2 file_operations structures const. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Make our address_space_operations constSteven Whitehouse2006-07-033-3/+3
| | | | | | | | | As per Christoph's patch: http://www.kernel.org/git/?p=linux/kernel/git/steve/gfs2-2.6.git;a=commitdiff;h=f5e54d6e53a20cef45af7499e86164f0e0d16bb2 We mark struct address_space_operations const in GFS2. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] API change for gfs2_statfsSteven Whitehouse2006-07-031-1/+2
| | | | | | | The kernel API for super_operations->statfs() has changed so this updates GFS2 to the new API. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [patch 1/1] gfs2: get_sb_dev() fixAndrew Morton2006-07-031-4/+3
| | | | | | | | | Update GFS2 for dhowells API changes. Cc: Steven Whitehouse <swhiteho@redhat.com> Cc: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
* [GFS2] Remove dependance on tty_write_message()Steven Whitehouse2006-07-031-19/+4
| | | | | | | | This removes the call in GFS2 to tty_write_message and replaces it with a printk. As the export was added by GFS2, we remove this as well. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
OpenPOWER on IntegriCloud