commit a731d12d6ddd1e703770cacb5dfecb155b03ee06 Author: Joel Becker Date: Mon Apr 6 16:43:42 2009 -0700 ocfs2: Use nd_set_link(). ocfs2 was hand-calling vfs_follow_link(), but there's no point to that. Let's use page_follow_link_light() and nd_set_link(). Signed-off-by: Joel Becker Signed-off-by: Al Viro commit 7e567b44e6c59ad8bec321afb03302ffb1e6dda6 Merge: 020f932 2191aeb Author: Linus Torvalds Date: Sat May 2 16:30:47 2009 -0700 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: ocfs2: Change repository in MAINTAINERS. ocfs2: Fix a missing credit when deleting from indexed directories. ocfs2/trivial: Remove unused variable in ocfs2_rename. ocfs2: Add missing iput() during error handling in ocfs2_dentry_attach_lock() ocfs2: Fix some printk() warnings. ocfs2: Fix 2 warning during ocfs2 make. ocfs2: Reserve 1 more cluster in expanding_inline_dir for indexed dir. commit dfa13f39b798fee68250abe1aed851395c8b51b5 Author: Joel Becker Date: Wed Apr 29 17:55:08 2009 -0700 ocfs2: Fix a missing credit when deleting from indexed directories. The ocfs2 directory index updates two blocks when we remove an entry - the dx root and the dx leaf. OCFS2_DELETE_INODE_CREDITS was only accounting for the dx leaf. This shows up when ocfs2_delete_inode() runs out of credits in jbd2_journal_dirty_metadata() at "J_ASSERT_JH(jh, handle->h_buffer_credits > 0);". The test that caught this was running dirop_file_racer from the ocfs2-test suite with a 250-character filename PREFIX. Run on a 512B blocksize, it forces the orphan dir index to grow large enough to trigger. Signed-off-by: Joel Becker commit 7e31a966ad270ba32a77c157c015cd7c82faaa55 Author: Tao Ma Date: Wed Apr 29 01:20:55 2009 +0800 ocfs2/trivial: Remove unused variable in ocfs2_rename. With indexed dir enabled, now we use ocfs2_dir_lookup_result to wrap all the bh used for dir. So remove the 2 unused variables. Signed-off-by: Tao Ma Signed-off-by: Joel Becker commit a5a0a630922a2f6a774b6dac19f70cb5abd86bb0 Author: Sunil Mushran Date: Mon Apr 20 21:34:18 2009 -0700 ocfs2: Add missing iput() during error handling in ocfs2_dentry_attach_lock() In ocfs2_dentry_attach_lock(), if unable to get the dentry lock, we need to call iput(inode) because a failure here means no d_instantiate(), which means the normally matching iput() will not be called during dput(dentry). This patch fixes the oops that accompanies the following message: (3996,1):dlm_empty_lockres:2708 ERROR: lockres W00000000000000000a1046b06a4382 still has local locks! kernel BUG in dlm_empty_lockres at /rpmbuild/smushran/BUILD/ocfs2-1.4.2/fs/ocfs2/dlm/dlmmaster.c:2709! Signed-off-by: Sunil Mushran Signed-off-by: Joel Becker commit 5b09b507daaa882d888b6cd78ee89ba9caace44b Author: Joel Becker Date: Tue Apr 21 16:31:20 2009 -0700 ocfs2: Fix some printk() warnings. The old %llu vs u64 battle. Cast them correctly. Signed-off-by: Joel Becker commit 0fba813748f16f4eaf24d492c505226c4026d58f Author: Tao Ma Date: Thu Mar 19 05:08:43 2009 +0800 ocfs2: Fix 2 warning during ocfs2 make. fs/ocfs2/dir.c: In function ‘ocfs2_extend_dir’: fs/ocfs2/dir.c:2700: warning: ‘ret’ may be used uninitialized in this function fs/ocfs2/suballoc.c: In function ‘ocfs2_get_suballoc_slot_bit’: fs/ocfs2/suballoc.c:2216: warning: comparison is always true due to limited range of data type Signed-off-by: Tao Ma Signed-off-by: Joel Becker commit 328eaaba4e41a04c1dc4679d65bea3fee4349d86 Author: Miklos Szeredi Date: Tue Apr 14 19:48:39 2009 +0200 ocfs2: fix i_mutex locking in ocfs2_splice_to_file() Rearrange locking of i_mutex on destination and call to ocfs2_rw_lock() so locks are only held while buffers are copied with the pipe_to_file() actor, and not while waiting for more data on the pipe. Signed-off-by: Miklos Szeredi Signed-off-by: Jens Axboe commit 035a571120ddbe4f92b91bbe46f3eff05b6e43eb Author: Tao Ma Date: Tue Apr 7 07:40:57 2009 +0800 ocfs2: Reserve 1 more cluster in expanding_inline_dir for indexed dir. In ocfs2_expand_inline_dir, we calculate whether we need 1 extra cluster if we can't store the dx inline the root and save it in dx_alloc. So add it when we call ocfs2_reserve_clusters. Signed-off-by: Tao Ma Signed-off-by: Mark Fasheh commit 7bfac9ecf0585962fe13584f5cf526d8c8e76f17 Author: Miklos Szeredi Date: Mon Apr 6 17:41:00 2009 +0200 splice: fix deadlock in splicing to file There's a possible deadlock in generic_file_splice_write(), splice_from_pipe() and ocfs2_file_splice_write(): - task A calls generic_file_splice_write() - this calls inode_double_lock(), which locks i_mutex on both pipe->inode and target inode - ordering depends on inode pointers, can happen that pipe->inode is locked first - __splice_from_pipe() needs more data, calls pipe_wait() - this releases lock on pipe->inode, goes to interruptible sleep - task B calls generic_file_splice_write(), similarly to the first - this locks pipe->inode, then tries to lock inode, but that is already held by task A - task A is interrupted, it tries to lock pipe->inode, but fails, as it is already held by task B - ABBA deadlock Fix this by explicitly ordering locks: the outer lock must be on target inode and the inner lock (which is later unlocked and relocked) must be on pipe->inode. This is OK, pipe inodes and target inodes form two nonoverlapping sets, generic_file_splice_write() and friends are not called with a target which is a pipe. Signed-off-by: Miklos Szeredi Acked-by: Mark Fasheh Acked-by: Jens Axboe Cc: stable@kernel.org Signed-off-by: Linus Torvalds commit 9140db04ef185f934acf2b1b15b3dd5e6a6bfc22 Author: Srinivas Eeda Date: Fri Mar 6 14:21:46 2009 -0800 ocfs2: recover orphans in offline slots during recovery and mount During recovery, a node recovers orphans in it's slot and the dead node(s). But if the dead nodes were holding orphans in offline slots, they will be left unrecovered. If the dead node is the last one to die and is holding orphans in other slots and is the first one to mount, then it only recovers it's own slot, which leaves orphans in offline slots. This patch queues complete_recovery to clean orphans for all offline slots during mount and node recovery. Signed-off-by: Srinivas Eeda Acked-by: Joel Becker Signed-off-by: Mark Fasheh commit 1fca3a05ef2823830925dfb66711d6d920265a8d Author: Hisashi Hifumi Date: Thu Mar 5 17:22:21 2009 +0900 ocfs2: Pagecache usage optimization on ocfs2 A page can have multiple buffers and even if a page is not uptodate, some buffers can be uptodate on pagesize != blocksize environment. This aops checks that all buffers which correspond to a part of a file that we want to read are uptodate. If so, we do not have to issue actual read IO to HDD even if a page is not uptodate because the portion we want to read are uptodate. "block_is_partially_uptodate" function is already used by ext2/3/4. With the following patch random read/write mixed workloads or random read after random write workloads can be optimized and we can get performance improvement. Signed-off-by: Hisashi Hifumi Signed-off-by: Mark Fasheh commit 6ca497a83e592d64e050c4d04b6dedb8c915f39a Author: wengang wang Date: Fri Mar 6 21:29:10 2009 +0800 ocfs2: fix rare stale inode errors when exporting via nfs For nfs exporting, ocfs2_get_dentry() returns the dentry for fh. ocfs2_get_dentry() may read from disk when the inode is not in memory, without any cross cluster lock. this leads to the file system loading a stale inode. This patch fixes above problem. Solution is that in case of inode is not in memory, we get the cluster lock(PR) of alloc inode where the inode in question is allocated from (this causes node on which deletion is done sync the alloc inode) before reading out the inode itsself. then we check the bitmap in the group (the inode in question allcated from) to see if the bit is clear. if it's clear then it's stale. if the bit is set, we then check generation as the existing code does. We have to read out the inode in question from disk first to know its alloc slot and allot bit. And if its not stale we read it out using ocfs2_iget(). The second read should then be from cache. And also we have to add a per superblock nfs_sync_lock to cover the lock for alloc inode and that for inode in question. this is because ocfs2_get_dentry() and ocfs2_delete_inode() lock on them in reverse order. nfs_sync_lock is locked in EX mode in ocfs2_get_dentry() and in PR mode in ocfs2_delete_inode(). so that mutliple ocfs2_delete_inode() can run concurrently in normal case. [mfasheh@suse.com: build warning fixes and comment cleanups] Signed-off-by: Wengang Wang Acked-by: Joel Becker Signed-off-by: Mark Fasheh commit 9405dccfd3201d2b76e120949bec81ba8cfbd2d0 Author: Sunil Mushran Date: Thu Feb 26 15:00:49 2009 -0800 ocfs2/dlm: Tweak mle_state output The debugfs file, mle_state, now prints the number of largest number of mles in one hash link. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 516b7e52abc7efd61c084b217c61985a403828ed Author: Sunil Mushran Date: Thu Feb 26 15:00:48 2009 -0800 ocfs2/dlm: Do not purge lockres that is being migrated dlm_purge_lockres() This patch attempts to fix a fine race between purging and migration. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 7141514b8307734c117f100c4a3637887c5def45 Author: Sunil Mushran Date: Thu Feb 26 15:00:47 2009 -0800 ocfs2/dlm: Remove struct dlm_lock_name in struct dlm_master_list_entry This patch removes struct dlm_lock_name and adds the entries directly to struct dlm_master_list_entry. Under the new scheme, both mles that are backed by a lockres or not, will have the name populated in mle->mname. This allows us to get rid of code that was figuring out the location of the mle name. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit e64ff14607ac90b2f3349550a41cc8dc0c0b1324 Author: Sunil Mushran Date: Thu Feb 26 15:00:46 2009 -0800 ocfs2/dlm: Show the number of lockres/mles in dlm_state This patch shows the number of lockres' and mles in the debugfs file, dlm_state. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 7d62a978a8c85cd82301615840d744f0d83b87e7 Author: Sunil Mushran Date: Thu Feb 26 15:00:45 2009 -0800 ocfs2/dlm: dlm_set_lockres_owner() and dlm_change_lockres_owner() inlined This patch inlines dlm_set_lockres_owner() and dlm_change_lockres_owner(). Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 6800791ab773453bdec337efb3f0cec6557f3bb3 Author: Sunil Mushran Date: Thu Feb 26 15:00:44 2009 -0800 ocfs2/dlm: Improve lockres counts This patch replaces the lockres counts that tracked the number number of locally and remotely mastered lockres' with a current and total count. The total count is the number of lockres' that have been created since the dlm domain was created. The number of locally and remotely mastered counts can be computed using the locking_state output. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 2041d8fdcec7603401829f60810c1dbd5e96c043 Author: Sunil Mushran Date: Thu Feb 26 15:00:43 2009 -0800 ocfs2/dlm: Track number of mles The lifetime of a mle is limited to the duration of the lockres mastery process. While typically this lifetime is fairly short, we have noticed the number of mles explode under certain circumstances. This patch tracks the number of each different types of mles and should help us determine how best to speed up the mastery process. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 67ae1f0604da3bcf3ed6dec59ac71d07e54a404c Author: Sunil Mushran Date: Thu Feb 26 15:00:42 2009 -0800 ocfs2/dlm: Indent dlm_cleanup_master_list() The previous patch explicitly did not indent dlm_cleanup_master_list() so as to make the patch readable. This patch properly indents the function. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 2ed6c750d645d09b5948e46fada3ca1fda3157b5 Author: Sunil Mushran Date: Thu Feb 26 15:00:41 2009 -0800 ocfs2/dlm: Activate dlm->master_hash for master list entries With this patch, the mles are stored in a hash and not a simple list. This should improve the mle lookup time when the number of outstanding masteries is large. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit e2b66ddcce922529e058cf74d839c4c49c8379a1 Author: Sunil Mushran Date: Thu Feb 26 15:00:40 2009 -0800 ocfs2/dlm: Create and destroy the dlm->master_hash This patch adds code to create and destroy the dlm->master_hash. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit c2cd4a44333034203cb198915e2b75c3227d41bf Author: Sunil Mushran Date: Thu Feb 26 15:00:39 2009 -0800 ocfs2/dlm: Refactor dlm_clean_master_list() This patch refactors dlm_clean_master_list() so as to make it easier to convert the mle list to a hash. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit f77a9a78c3a1d995b3bf948dbcad5c4a1b2302d5 Author: Sunil Mushran Date: Thu Feb 26 15:00:38 2009 -0800 ocfs2/dlm: Clean up struct dlm_lock_name For master mle, the name it stored in the attached lockres in struct qstr. For block and migration mle, the name is stored inline in struct dlm_lock_name. This patch attempts to make struct dlm_lock_name look like a struct qstr. While we could use struct qstr, we don't because we want to avoid having to malloc and free the lockname string as the mle's lifetime is fairly short. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 1c0845773ad9f4875603b752235aea8aa04565f3 Author: Sunil Mushran Date: Thu Feb 26 15:00:37 2009 -0800 ocfs2/dlm: Encapsulate adding and removing of mle from dlm->master_list This patch encapsulates adding and removing of the mle from the dlm->master_list. This patch is part of the series of patches that converts the mle list to a mle hash. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit feb473a6e8bd19297d0f3bb377b25055c0228c0a Author: Tao Ma Date: Wed Feb 25 00:53:25 2009 +0800 ocfs2: Optimize inode group allocation by recording last used group. In ocfs2, the block group search looks for the "emptiest" group to allocate from. So if the allocator has many equally(or almost equally) empty groups, new block group will tend to get spread out amongst them. So we add osb_inode_alloc_group in ocfs2_super to record the last used inode allocation group. For more details, please see http://oss.oracle.com/osswiki/OCFS2/DesignDocs/InodeAllocationStrategy. I have done some basic test and the results are a ten times improvement on some cold-cache stat workloads. Signed-off-by: Tao Ma Signed-off-by: Mark Fasheh commit 60ca81e82dae4aa2e8ae84cf96b4d08535931669 Author: Tao Ma Date: Wed Feb 25 00:53:24 2009 +0800 ocfs2: Allocate inode groups from global_bitmap. Inode groups used to be allocated from local alloc file, but since we want all inodes to be contiguous enough, we will try to allocate them directly from global_bitmap. Signed-off-by: Tao Ma Signed-off-by: Mark Fasheh commit 138211515c102807a16c02fdc15feef1f6ef8124 Author: Tao Ma Date: Wed Feb 25 00:53:23 2009 +0800 ocfs2: Optimize inode allocation by remembering last group In ocfs2, the inode block search looks for the "emptiest" inode group to allocate from. So if an inode alloc file has many equally (or almost equally) empty groups, new inodes will tend to get spread out amongst them, which in turn can put them all over the disk. This is undesirable because directory operations on conceptually "nearby" inodes force a large number of seeks. So we add ip_last_used_group in core directory inodes which records the last used allocation group. Another field named ip_last_used_slot is also added in case inode stealing happens. When claiming new inode, we passed in directory's inode so that the allocation can use this information. For more details, please see http://oss.oracle.com/osswiki/OCFS2/DesignDocs/InodeAllocationStrategy. Signed-off-by: Tao Ma Signed-off-by: Mark Fasheh commit 1d46dc08d33138c29c63d717807c08ab704fc773 Author: Mark Fasheh Date: Thu Feb 19 13:17:05 2009 -0800 ocfs2: fix leaf start calculation in ocfs2_dx_dir_rebalance() ocfs2_dx_dir_rebalance() is passed the block offset of a dx leaf which needs rebalancing. Since we rebalance an entire cluster at a time however, this function needs to calculate the beginning of that cluster, in blocks. The calculation was wrong, which would result in a read of non-leaf blocks. Fix the calculation by adding ocfs2_block_to_cluster_start() which is a more straight-forward way of determining this. Reported-by: Tristan Ye Signed-off-by: Mark Fasheh commit b80b549c3520b31d3bbc4b36e37e0a5102da0b94 Author: Mark Fasheh Date: Wed Feb 18 11:41:38 2009 -0800 ocfs2: re-order ocfs2_empty_dir checks ocfs2_empty_dir() is far more expensive than checking link count. Since both need to be checked at the same time, we can improve performance by checking link count first. Signed-off-by: Mark Fasheh commit 3a8df2b9c365a9f366b76bbbce479e1cc18ddc16 Author: Mark Fasheh Date: Mon Nov 24 17:14:09 2008 -0800 ocfs2: Enable indexed directories Since the disk format is finalized, we can set this feature bit in the supported mask. Signed-off-by: Mark Fasheh Acked-by: Joel Becker commit e3a93c2db6410822aa24295c3874b44ba21730a8 Author: Mark Fasheh Date: Tue Feb 17 15:29:35 2009 -0800 ocfs2: Add total entry count to dx_root_block This little bit of extra accounting speeds up ocfs2_empty_dir() dramatically by allowing us to short-circuit the full directory scan. Signed-off-by: Mark Fasheh commit 198a1ca3b735986542c538e38b9499ffcaed7005 Author: Mark Fasheh Date: Thu Nov 20 17:54:57 2008 -0800 ocfs2: Increase max links count Since we've now got a directory format capable of handling a large number of entries, we can increase the maximum link count supported. This only gets increased if the directory indexing feature is turned on. Signed-off-by: Mark Fasheh Acked-by: Joel Becker commit e7c17e43090afe558c40bfb66637744c27bd2aeb Author: Mark Fasheh Date: Thu Jan 29 18:17:46 2009 -0800 ocfs2: Introduce dir free space list The only operation which doesn't get faster with directory indexing is insert, which still has to walk the entire unindexed directory portion to find a free block. This patch provides an improvement in directory insert performance by maintaining a singly linked list of directory leaf blocks which have space for additional dirents. Signed-off-by: Mark Fasheh Acked-by: Joel Becker commit 4ed8a6bb083bfcc21f1ed66a474b03c0386e4b34 Author: Mark Fasheh Date: Mon Nov 24 17:02:08 2008 -0800 ocfs2: Store dir index records inline Allow us to store a small number of directory index records in the ocfs2_dx_root_block. This saves us a disk read on small to medium sized directories (less than about 250 entries). The inline root is automatically turned into a root block with extents if the directory size increases beyond it's capacity. Signed-off-by: Mark Fasheh Acked-by: Joel Becker commit 9b7895efac906d66d19856194e1ba61f37e231a4 Author: Mark Fasheh Date: Wed Nov 12 16:27:44 2008 -0800 ocfs2: Add a name indexed b-tree to directory inodes This patch makes use of Ocfs2's flexible btree code to add an additional tree to directory inodes. The new tree stores an array of small, fixed-length records in each leaf block. Each record stores a hash value, and pointer to a block in the traditional (unindexed) directory tree where a dirent with the given name hash resides. Lookup exclusively uses this tree to find dirents, thus providing us with constant time name lookups. Some of the hashing code was copied from ext3. Unfortunately, it has lots of unfixed checkpatch errors. I left that as-is so that tracking changes would be easier. Signed-off-by: Mark Fasheh Acked-by: Joel Becker commit 4a12ca3a00a244e1fd1e673d151ea38b71e11d55 Author: Mark Fasheh Date: Wed Nov 12 15:43:34 2008 -0800 ocfs2: Introduce dir lookup helper struct Many directory manipulation calls pass around a tuple of dirent, and it's containing buffer_head. Dir indexing has a bit more state, but instead of adding yet more arguments to functions, we introduce 'struct ocfs2_dir_lookup_result'. In this patch, it simply holds the same tuple, but future patches will add more state. Signed-off-by: Mark Fasheh Acked-by: Joel Becker commit 59b526a30722f29e5dba6210a6e0fc34e3149b94 Author: Sunil Mushran Date: Tue Dec 16 15:49:18 2008 -0800 ocfs2: Remove debugfs file local_alloc_stats This patch removes the debugfs file local_alloc_stats as that information is now included in the fs_state debugfs file. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 50397507e856455b3f5cb3d5c7c482209f9e46a0 Author: Sunil Mushran Date: Wed Dec 17 14:17:43 2008 -0800 ocfs2: Expose the file system state via debugfs This patch creates a per mount debugfs file, fs_state, which exposes information like, cluster stack in use, states of the downconvert, recovery and commit threads, number of journal txns, some allocation stats, list of all slots, etc. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 96a6c64b5354b804b3ccfd1b31306565a01ebcb1 Author: Sunil Mushran Date: Tue Dec 16 15:49:16 2008 -0800 ocfs2: Move struct recovery_map to a header file Move the definition of struct recovery_map from journal.c to journal.h. This is preparation for the next patch. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 87d3d3f3931f3e0fca44fbb5c06ad45fc4dca9bc Author: Sunil Mushran Date: Wed Dec 17 14:17:42 2008 -0800 ocfs2/hb: Expose the list of heartbeating nodes via debugfs This patch creates a debugfs file, o2hb/livesnodes, which exposes the aggregate list of heartbeating node across all heartbeat regions. Signed-off-by: Sunil Mushran Signed-off-by: Mark Fasheh commit 8fe74cf053de7ad2124a894996f84fa890a81093 Merge: c2eb2fa ced117c Author: Linus Torvalds Date: Thu Apr 2 21:09:10 2009 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: Remove two unneeded exports and make two symbols static in fs/mpage.c Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225 Trim includes of fdtable.h Don't crap into descriptor table in binfmt_som Trim includes in binfmt_elf Don't mess with descriptor table in load_elf_binary() Get rid of indirect include of fs_struct.h New helper - current_umask() check_unsafe_exec() doesn't care about signal handlers sharing New locking/refcounting for fs_struct Take fs_struct handling to new file (fs/fs_struct.c) Get rid of bumping fs_struct refcount in pivot_root(2) Kill unsharing fs_struct in __set_personality() commit c2ec175c39f62949438354f603f4aa170846aabb Author: Nick Piggin Date: Tue Mar 31 15:23:21 2009 -0700 mm: page_mkwrite change prototype to match fault Change the page_mkwrite prototype to take a struct vm_fault, and return VM_FAULT_xxx flags. There should be no functional change. This makes it possible to return much more detailed error information to the VM (and also can provide more information eg. virtual_address to the driver, which might be important in some special cases). This is required for a subsequent fix. And will also make it easier to merge page_mkwrite() with fault() in future. Signed-off-by: Nick Piggin Cc: Chris Mason Cc: Trond Myklebust Cc: Miklos Szeredi Cc: Steven Whitehouse Cc: Mark Fasheh Cc: Joel Becker Cc: Artem Bityutskiy Cc: Felix Blyakher Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48 Author: Al Viro Date: Sun Mar 29 19:08:22 2009 -0400 New helper - current_umask() current->fs->umask is what most of fs_struct users are doing. Put that into a helper function. Signed-off-by: Al Viro commit d8fba0ffe5e7442fc2560873ec901be6e56602a1 Author: Al Viro Date: Fri Feb 20 06:00:26 2009 +0000 constify dentry_operations: OCFS2 Signed-off-by: Al Viro