You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(37) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
(6) |
Feb
|
Mar
(13) |
Apr
(3) |
May
(6) |
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
(3) |
Nov
(6) |
Dec
(8) |
2011 |
Jan
(11) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Pierre R. <pr...@us...> - 2009-10-20 17:23:46
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "UNNAMED PROJECT". The branch, master has been updated via ea51d9d6e21a6c9e7f4e671705904d89d965404d (commit) via e74e387bf3c60d9a1b25fd4481a15fc9a68f531c (commit) from 99784aa03802a96d85649b18a1173e6637d26e57 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ea51d9d6e21a6c9e7f4e671705904d89d965404d Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 17:06:39 2009 +0200 Add generated files to gitignore diff --git a/.gitignore b/.gitignore index 4246edc..9cc9f4d 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,7 @@ ncscope.* /stamp-h1 Makefile.in Makefile + +tools/* +!tools/*.c +!tools/Makefile.am commit e74e387bf3c60d9a1b25fd4481a15fc9a68f531c Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 17:00:45 2009 +0200 [FIX] Make mkfs_kdfs compile diff --git a/tools/Makefile.am b/tools/Makefile.am index 484846e..24e0dda 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -8,7 +8,7 @@ ### dist_bin_SCRIPTS = krg_legacy_scheduler krgboot_helper krginit_helper -bin_PROGRAMS = migrate checkpoint restart krgadm krgcapset krgcr-run krgboot krginit ipccheckpoint ipcrestart +bin_PROGRAMS = migrate checkpoint restart krgadm krgcapset krgcr-run krgboot krginit ipccheckpoint ipcrestart mkfs_kdfs INCLUDES = -I@top_srcdir@/libs/include LDADD = @top_builddir@/libs/libkerrighed/libkerrighed.la @top_builddir@/libs/libkrgcb/libkrgcb.la @@ -23,6 +23,7 @@ krgboot_SOURCES = krgboot.c krginit_SOURCES = krginit.c ipccheckpoint_SOURCES = ipccheckpoint.c ipcrestart_SOURCES = ipcrestart.c +mkfs_kdfs_SOURCES = mkfs_kdfs.c EXTRA_DIST = krginit_helper.conf diff --git a/utils/mkfs_kdfs.c b/tools/mkfs_kdfs.c similarity index 98% rename from utils/mkfs_kdfs.c rename to tools/mkfs_kdfs.c index 264bb87..c0399eb 100644 --- a/utils/mkfs_kdfs.c +++ b/tools/mkfs_kdfs.c @@ -15,7 +15,7 @@ #include <string.h> #include <errno.h> -#include <asm/page.h> +#include <sys/user.h> // for __cpu_to_le16 #include <linux/byteorder/little_endian.h> @@ -33,8 +33,7 @@ #include <asm/types.h> /* KDDM includes */ -#include <kerrighed/sys/types.h> -#include <kerrighed/krgnodemask.h> +#include <krgnodemask.h> #include <kerrighed_tools.h> /* From "super.h": */ ----------------------------------------------------------------------- Summary of changes: .gitignore | 4 ++++ tools/Makefile.am | 3 ++- {utils => tools}/mkfs_kdfs.c | 5 ++--- 3 files changed, 8 insertions(+), 4 deletions(-) rename {utils => tools}/mkfs_kdfs.c (98%) hooks/post-receive -- UNNAMED PROJECT |
From: Pierre R. <pr...@us...> - 2009-10-20 16:41:52
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, master has been updated discards 9d670d2889578bcd82fb2d985e78508bfc342a49 (commit) discards 976e7b299ff27bf6dd46c3dd1ae07815f3fcf1e7 (commit) discards 5dbef9949ade74cd4cdd22da26b84a048725d5dd (commit) via e30da12106f8c6a23cd1e6be028d3a64877213d8 (commit) via 9bd901dd87d40089430b5215b9370a91fe5f9a3f (commit) via d98ddf3f65bcd107c0f0edc09f5fcef9e49a03ca (commit) via 87b2eecf0f627ffcc2ea8300e0d0781f8e5c9843 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (9d670d2889578bcd82fb2d985e78508bfc342a49) \ N -- N -- N (e30da12106f8c6a23cd1e6be028d3a64877213d8) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: ipc/krgipc_mobility.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) hooks/post-receive -- kdfs |
From: Pierre R. <pr...@us...> - 2009-10-20 16:41:45
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated discards 3a01e00aeeeb7e3f4a2026d46598692a0feb4c8f (commit) discards 431f64eadaf0d907981b11167177d3e78333fafc (commit) discards 32569709409a6f590c3a367fd3f6f714b6c0d931 (commit) discards 683476bab130ad5c1e5821fed314940981247b60 (commit) discards 308d9d7359144747056bcfeec4b797d2253d041e (commit) discards 3d3a34c2490a0ea96b39ba2acbacfb37b1ddd953 (commit) discards 109f85f01d10bf1fd2e3d59f59e49eb0eb62e9ff (commit) discards 6332d47e895e0e17ae76521800e1ba6eb54c7a23 (commit) discards 2adf3013922a9ca6dffb7e42c2847134a0167274 (commit) discards 7d4f4669897ca3bcc7d540c4bf0f81bc4b65268a (commit) discards 8f6cb18b661235e591b33504349f031d2021e59a (commit) discards 5bd840461f5e33cf9ee0a83751daae473b1407c6 (commit) discards 17301662a4431352d1e9a8baa5ef125322363f8a (commit) discards a1b5a937506912cc8e339d002ed54e8f3ec2cc34 (commit) discards 29ceb8abebd6ea37670ecbf0f5fc19e280bdeb29 (commit) discards 04a5f0a443f52df5a415ddbbd8cc33bdbed37c5c (commit) discards 5d0d61a6740ae2bed50dc9843d5e68ea36b004e5 (commit) discards aae40f37e26d7b3ec7b385a9b958cb1fb5cb0634 (commit) discards 730d35668b2dc9d1807f4da4ff060d0ccdeab53c (commit) discards 5dbef9949ade74cd4cdd22da26b84a048725d5dd (commit) via bfd7d615a19bbd0d0524784462261f068cb520b2 (commit) via 77085c1bc738310b68f2eb81e7dd682a84ebb944 (commit) via 3e68210e5a57162eb213b7bfad04f8ac53a04f2f (commit) via 925cb2ee96c14f8efbcd91f9bec0f1b3d0a1c5cd (commit) via 5cf9481b874f6096355099576c7fb1f46a3f0a77 (commit) via dcd9c702dec76ab46f4ec5d0ac20b22460aa2256 (commit) via 12b0ff33665490c2ccd757991832753168bae7b9 (commit) via 78fd05d7e0ef29510250bb63f387fe212c2c217b (commit) via dad62b458d0bce44981adee29a5e540eb2907847 (commit) via 448c10668045e7d217149e7bc7a1725730202e5e (commit) via 7795b4846f5cc77bca954e6f8f207dde436ecbb9 (commit) via 9f15d3b58f3f75135f3cf3e88e0094bf75d80c38 (commit) via d88702c37c8cb0c089fa2d839920daa1270bf39a (commit) via 0bf1ac82724db2090d893fbdef7a49a1ebc07ca6 (commit) via a657d43db944e313e4b5975e49c17e0981024f82 (commit) via 77cc1932ed4ca5bc6708e4bbbfa5753fe72da878 (commit) via 629ed1e4c313c1e20b00b5fdc6d5ce0edc635571 (commit) via 42a1a88931fcf91b953109de529a69021bf9f777 (commit) via 7b412f2abfd2b8ae9a13b2cab303167bfd32cd80 (commit) via e30da12106f8c6a23cd1e6be028d3a64877213d8 (commit) via 9bd901dd87d40089430b5215b9370a91fe5f9a3f (commit) via d98ddf3f65bcd107c0f0edc09f5fcef9e49a03ca (commit) via 87b2eecf0f627ffcc2ea8300e0d0781f8e5c9843 (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (3a01e00aeeeb7e3f4a2026d46598692a0feb4c8f) \ N -- N -- N (bfd7d615a19bbd0d0524784462261f068cb520b2) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit bfd7d615a19bbd0d0524784462261f068cb520b2 Author: Marko Obrovac <mar...@in...> Date: Tue Oct 20 14:52:38 2009 +0000 [FIX] Change the makefile to conform to new compiling rules (kdfs is now built in the kernel, not a module) diff --git a/fs/kdfs/Makefile b/fs/kdfs/Makefile index ca9d271..f59b146 100644 --- a/fs/kdfs/Makefile +++ b/fs/kdfs/Makefile @@ -1,7 +1 @@ -obj-m += krgbuiltin.o - - -krgbuiltin-objs := physical_fs.o super.o inode.o dir.o file.o address_space.o extent.o cow.o -krgbuiltin-objs += $(krgbuiltin-y) - -EXTRA_CFLAGS += -I$(M) +obj-y := physical_fs.o super.o inode.o dir.o file.o address_space.o extent.o cow.o commit 77085c1bc738310b68f2eb81e7dd682a84ebb944 Author: Marko Obrovac <mar...@in...> Date: Tue Oct 20 14:51:37 2009 +0000 [FIX] fixed name clashes with the kerrighed functions (and marked all the internal functions as internal) diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index 0ae67a8..c299877 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -24,7 +24,7 @@ #define KDFS_PART "KDFS - Native File System Accesses" -void chroot_to_physical_root(struct path *saved_root) +void __change_to_physical_root(struct path *saved_root) { write_lock(¤t->fs->lock); *saved_root = current->fs->root; @@ -32,7 +32,7 @@ void chroot_to_physical_root(struct path *saved_root) write_unlock(¤t->fs->lock); } -void chroot_to_saved_root(const struct path *saved_root) +void __change_to_saved_root(const struct path *saved_root) { struct path root; @@ -43,7 +43,7 @@ void chroot_to_saved_root(const struct path *saved_root) path_put(&root); } -int change_creds(struct cred **overridden, const struct cred **old, +int __change_creds(struct cred **overridden, const struct cred **old, uid_t fsuid, gid_t fsgid) { *overridden = prepare_creds(); @@ -57,7 +57,7 @@ int change_creds(struct cred **overridden, const struct cred **old, return 0; } -void revert_old_creds(struct cred *overridden, const struct cred *old) +void __revert_old_creds(struct cred *overridden, const struct cred *old) { revert_creds(old); put_cred(overridden); @@ -90,11 +90,11 @@ long create_phys_dir(const char *pathname, DEBUG(DBG_INFO, "Create dir %s\n", pathname); - error = change_creds(&overridden_creds, &old_creds, uid, gid); + error = __change_creds(&overridden_creds, &old_creds, uid, gid); if (error) goto out; - chroot_to_physical_root(&saved_path); + __change_to_physical_root(&saved_path); error = path_lookup(pathname, LOOKUP_PARENT, &nd); if (error) @@ -124,8 +124,8 @@ long create_phys_dir(const char *pathname, path_put(&nd.path); out: - chroot_to_saved_root(&saved_path); - revert_old_creds(overridden_creds, old_creds); + __change_to_saved_root(&saved_path); + __revert_old_creds(overridden_creds, old_creds); return error; } @@ -154,11 +154,11 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) DEBUG(DBG_TRACE, "Remove dir %s\n", pathname); - res = change_creds(&overridden_creds, &old_creds, uid, gid); + res = __change_creds(&overridden_creds, &old_creds, uid, gid); if (res) goto out; - chroot_to_physical_root(&saved_path); + __change_to_physical_root(&saved_path); file = filp_open(pathname, O_LARGEFILE|O_RDONLY, 0644); if (IS_ERR(file) && PTR_ERR(file) == -ENOENT) { @@ -184,8 +184,8 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) filp_close(file,current->files); out: - chroot_to_saved_root(&saved_path); - revert_old_creds(overridden_creds, old_creds); + __change_to_saved_root(&saved_path); + __revert_old_creds(overridden_creds, old_creds); return res; } @@ -213,11 +213,11 @@ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_ const struct cred *old_creds; struct cred *overridden_creds; - error = change_creds(&overridden_creds, &old_creds, uid, gid); + error = __change_creds(&overridden_creds, &old_creds, uid, gid); if (error) goto out; - chroot_to_physical_root(&saved_path); + __change_to_physical_root(&saved_path); DEBUG(DBG_INFO, "Open physical file %s with flags 0x%08x - mode %o\n", @@ -230,8 +230,8 @@ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_ DEBUG(DBG_INFO, "Open physical file %s done : %p\n", filename, file); out: - chroot_to_saved_root(&saved_path); - revert_old_creds(overridden_creds, old_creds); + __change_to_saved_root(&saved_path); + __revert_old_creds(overridden_creds, old_creds); if (error) file = ERR_PTR(error); @@ -417,11 +417,11 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) DEBUG(DBG_TRACE, "Remove file %s\n", filename); - res = change_creds(&overridden_creds, &old_creds, uid, gid); + res = __change_creds(&overridden_creds, &old_creds, uid, gid); if (res) goto out; - chroot_to_physical_root(&saved_path); + __change_to_physical_root(&saved_path); file = filp_open(filename, O_LARGEFILE|O_RDONLY, 0644); @@ -448,8 +448,8 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) DEBUG(DBG_INFO, "After vfs_unlink res = %d\n", res); out: - chroot_to_saved_root(&saved_path); - revert_old_creds(overridden_creds, old_creds); + __change_to_saved_root(&saved_path); + __revert_old_creds(overridden_creds, old_creds); return res; } commit 3e68210e5a57162eb213b7bfad04f8ac53a04f2f Author: Marko Obrovac <mar...@in...> Date: Tue Oct 20 13:38:16 2009 +0000 [FIX] rename include dir from cntr to kddm diff --git a/fs/kdfs/cow.c b/fs/kdfs/cow.c index 862277e..478b814 100644 --- a/fs/kdfs/cow.c +++ b/fs/kdfs/cow.c @@ -10,7 +10,7 @@ #include <linux/pagemap.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "inode.h" #include "address_space.h" diff --git a/fs/kdfs/extent.c b/fs/kdfs/extent.c index b9d0556..4d142e7 100644 --- a/fs/kdfs/extent.c +++ b/fs/kdfs/extent.c @@ -10,7 +10,7 @@ #include <linux/pagemap.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "inode.h" #include "address_space.h" commit 925cb2ee96c14f8efbcd91f9bec0f1b3d0a1c5cd Author: alebre <alebre@debian.localdomain> Date: Tue Oct 20 14:56:48 2009 +0200 [REFACTORING] address_space.c (begin/end write and SetPageLocked) diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index a98c5ab..5b60704 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -96,20 +96,22 @@ int kdfs_readpage(struct file *file, struct page *page) return 0; } +/* TODO Suggested by Adrien for xxxx + * Priority : 3 + * Merge new kdfs_write_begin function with the older kdfs_prepare_write. + */ /* * page has been found or allocated from/in the page cache and locked * However, the data should be pre-read from the storage * Thus, one first-touch can happen. ISSUE, put data in the same page */ -int kdfs_prepare_write (struct file *file, - struct page *page, - unsigned offset, - unsigned _to) +int __kdfs_prepare_write (struct file *file, struct page *page, + unsigned offset, unsigned _to) { struct kdfs_page *k_page = NULL; struct kdfs_inode *k_inode = NULL; - DEBUG (DBG_INFO, "Prepare_write for file %s (ino %ld), page %ld from %d to %d (count = %d, mapping = %p)\n", + DEBUG (DBG_INFO, "begin_write for file %s (ino %ld), page %ld from %d to %d (count = %d, mapping = %p)\n", file->f_dentry->d_name.name, file->f_dentry->d_inode->i_ino, page->index, offset, _to, page_count(page), page->mapping); BUG_ON (page->mapping == NULL); @@ -133,8 +135,36 @@ int kdfs_prepare_write (struct file *file, return 0; } -// TODO cf. http://www.mail-archive.com/git...@vg.../msg03083.html -int kdfs_commit_write(struct file *file, +int kdfs_write_begin (struct file *file, + struct address_space *mapping, + loff_t pos, unsigned len, unsigned flags, + struct page **pagep, void **fsdata) +{ + struct page *page; + pgoff_t index; + unsigned from; + + index = pos >> PAGE_CACHE_SHIFT; + from = pos & (PAGE_CACHE_SIZE - 1); + + page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) + return -ENOMEM; + + *pagep = page; + return __kdfs_prepare_write(file, page, from, from+len); +} + + +/* TODO Suggested by Adrien for xxxx + * Priority : 3 + * Merge new kdfs_write_begin function with the older kdfs_prepare_write. + */ +/* TODO Suggested by Adrien for Adrien, + * an old TODO, ... probably just remove it ;) + * cf. http://www.mail-archive.com/git...@vg.../msg03083.html + */ +int __kdfs_commit_write(struct file *file, struct page *page, unsigned offset, unsigned _to) @@ -170,6 +200,30 @@ int kdfs_commit_write(struct file *file, return 0; } +int kdfs_write_end(struct file *file, + struct address_space *mapping, + loff_t pos, unsigned len, unsigned copied, + struct page *page, void *fsdata) +{ + unsigned from = pos & (PAGE_CACHE_SIZE - 1); + + /* zero the stale part of the page if we did a short copy */ + if (copied < len) { + void *kaddr = kmap_atomic(page, KM_USER0); + memset(kaddr + from + copied, 0, len - copied); + flush_dcache_page(page); + kunmap_atomic(kaddr, KM_USER0); + } + + __kdfs_commit_write(file, page, from, from+copied); + + unlock_page(page); + page_cache_release(page); + + return copied; +} + + int kdfs_writepage(struct page *page, struct writeback_control *wbc) { @@ -240,9 +294,9 @@ int kdfs_releasepage(struct page *page, gfp_t mask) } struct address_space_operations kdfs_aops = { - .commit_write = kdfs_commit_write, + .write_begin = kdfs_write_begin, + .write_end = kdfs_write_end, .invalidatepage = kdfs_invalidatepage, - .prepare_write = kdfs_prepare_write, .readpage = kdfs_readpage, .releasepage = kdfs_releasepage, .writepage = kdfs_writepage, @@ -612,7 +666,7 @@ int kdfs_iol_page_invalidate(kddm_obj_t *objEntry, kddm_set_t *set, objid_t obji struct kdfs_page *k_page = (struct kdfs_page *)objEntry->object; PRINT_FUNCTION_NAME; - SetPageLocked(k_page->page); + trylock_page(k_page->page); DEBUG(DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); remove_from_page_cache(k_page->page); ClearPagePrivate(k_page->page); @@ -734,7 +788,7 @@ int kdfs_iol_page_remove(void *object, struct kddm_set *set, objid_t objid) * so we need to remove the page from the cache by hand, because * we are not called by the VFS */ - SetPageLocked(k_page->page); + trylock_page(k_page->page); DEBUG(DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); remove_from_page_cache(k_page->page); ClearPagePrivate(k_page->page); diff --git a/fs/kdfs/address_space.h b/fs/kdfs/address_space.h index 68ca007..5a7ac7a 100644 --- a/fs/kdfs/address_space.h +++ b/fs/kdfs/address_space.h @@ -9,6 +9,7 @@ * @maintainer Adrien Lebre * * Copyright (C) 2006-2007, XtreemOS Consortium. + * Copyright (C) 2008-20xx, XtreemOS Consortium, Ascola Research Group. */ #ifndef __KDFS_ADDR_SPACE__ diff --git a/fs/kdfs/dir.c b/fs/kdfs/dir.c index 3c5a67a..6eb9439 100644 --- a/fs/kdfs/dir.c +++ b/fs/kdfs/dir.c @@ -595,7 +595,7 @@ int kdfs_make_empty(struct kdfs_inode *k_pdir, struct kdfs_inode *k_dir) */ int kdfs_dir_empty(struct kdfs_inode *k_dir) { - DEBUG(DBG_INFO, "Directory size: %llu empty if: %d\n", k_dir->inode->i_size, KDFS_DIRENT_SIZE * 2); + DEBUG(DBG_INFO, "Directory size: %llu empty if: %ld\n", k_dir->inode->i_size, KDFS_DIRENT_SIZE * 2); if (k_dir->inode->i_size > KDFS_DIRENT_SIZE * 2) return 0; return 1; diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index 10ec71a..f126cb8 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -180,8 +180,8 @@ struct kdfs_inode *__kdfs_mknod(struct kdfs_inode *k_pdir, break; } - k_nnod->inode->i_uid = current->fsuid; - k_nnod->inode->i_gid = current->fsgid; + k_nnod->inode->i_uid = current_fsuid(); + k_nnod->inode->i_gid = current_fsgid(); if (k_pdir->inode->i_mode & S_ISGID) { k_nnod->inode->i_gid = k_pdir->inode->i_gid; commit 5cf9481b874f6096355099576c7fb1f46a3f0a77 Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 13:38:44 2009 +0200 [FIX] Correct the code using read_inode which is not in the new kernels. Closed ticket #7 diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index 0460ec1..a98c5ab 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -825,7 +825,7 @@ int content_instantiate(kddm_set_t *kddm_set, void *private_data, int master) iput(inode); } else { DEBUG(DBG_INFO, "K_mapping will be retrieve from iget\n"); - inode = iget(k_sb->sb, content_data->ino); + inode = kdfs_getinode(k_sb->sb, content_data->ino); content_data->k_mapping = inode->i_mapping; } if (!content_data->k_mapping) diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index 3cf9616..10ec71a 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -1142,7 +1142,7 @@ int kdfs_iol_inode_first_touch(kddm_obj_t *objEntry, if (k_inode->inode) iput(k_inode->inode); else - k_inode->inode = iget(k_sb->sb, objid); + k_inode->inode = kdfs_getinode(k_sb->sb, objid); k_inode->flags = K_INODE_OK; } diff --git a/fs/kdfs/super.c b/fs/kdfs/super.c index 045c077..da2f32e 100644 --- a/fs/kdfs/super.c +++ b/fs/kdfs/super.c @@ -921,14 +921,14 @@ int kdfs_statfs(struct dentry *dfs, struct kstatfs *buf) * @param inode the VFS inode * */ -void kdfs_read_inode(struct inode *inode) +struct inode *kdfs_getinode(struct super_block *sb, unsigned long ino) { + struct inode *inode = NULL; struct file *file = NULL; char *phys_filename = NULL; struct kdfs_physical_inode phys_inode; PRINT_FUNCTION_NAME ; - ASSERT (inode != NULL) ; /* * TODO PRIORITY 2: Adrien @@ -936,6 +936,11 @@ void kdfs_read_inode(struct inode *inode) * For the moment, the workaround consists in using sb->s_fs_info to * reach it. It is probably not the best and cleanest solution. */ + inode = iget_locked(sb, ino); + if (!inode) + return ERR_PTR(-ENOMEM); + if (!(inode->i_state & I_NEW)) + return inode; /* Retrieve the inode meta file */ phys_filename = kmalloc(PATH_MAX, GFP_KERNEL); @@ -975,7 +980,9 @@ void kdfs_read_inode(struct inode *inode) inode->i_ino, ((struct kdfs_super_block*)inode->i_sb->s_fs_info)->k_opt->part_name); kfree(phys_filename); + unlock_new_inode(inode); PRINT_FUNCTION_EXIT; + return inode; } /* @@ -1254,7 +1261,6 @@ out: static struct super_operations kdfs_sops = { .delete_inode = kdfs_delete_inode, .drop_inode = kdfs_drop_inode, - .read_inode = kdfs_read_inode, .show_options = kdfs_show_options, .statfs = kdfs_statfs, .sync_fs = kdfs_sync_fs, diff --git a/fs/kdfs/super.h b/fs/kdfs/super.h index 36fc1f0..f480a74 100644 --- a/fs/kdfs/super.h +++ b/fs/kdfs/super.h @@ -216,6 +216,7 @@ void cleanup_kdfs(void); void kdfs_getphysicalpath(struct kdfs_super_block *k_sb, unsigned long ino, char *physical_filename); int kdfs_write_inode(struct inode *inode); +struct inode *kdfs_getinode(struct super_block *sb, unsigned long ino); /* Get a free inode id from kdfs_sb partition */ ino_t kdfs_get_freeino(struct kdfs_super_block *k_sb); commit dcd9c702dec76ab46f4ec5d0ac20b22460aa2256 Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 13:27:11 2009 +0200 [FIX] Correct all include paths to kddm.h diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index 65ae72f..0460ec1 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -13,7 +13,7 @@ #include <linux/pagemap.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "super.h" #include "inode.h" diff --git a/fs/kdfs/dir.c b/fs/kdfs/dir.c index 644d248..3c5a67a 100644 --- a/fs/kdfs/dir.c +++ b/fs/kdfs/dir.c @@ -13,7 +13,7 @@ #include <linux/buffer_head.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "super.h" #include "inode.h" diff --git a/fs/kdfs/file.c b/fs/kdfs/file.c index ea9898e..a1707bc 100644 --- a/fs/kdfs/file.c +++ b/fs/kdfs/file.c @@ -13,7 +13,7 @@ #include <linux/buffer_head.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "super.h" #include "inode.h" commit 12b0ff33665490c2ccd757991832753168bae7b9 Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 11:04:01 2009 +0200 [FIX] Fix printing of i_version which is u64 diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index ab0c3cd..3cf9616 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -37,7 +37,7 @@ void print_inode_cont(struct inode *node) printk(" i_nlink: %u\n", node->i_nlink); printk(" i_uid: %u\n", node->i_uid); printk(" i_gid: %u\n", node->i_gid); - printk("i_version: %ld\n", node->i_version); + printk("i_version: %llu\n", (unsigned long long)node->i_version); printk(" i_mode: %x\n\n\n", node->i_mode); } commit 78fd05d7e0ef29510250bb63f387fe212c2c217b Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 11:03:09 2009 +0200 [FIX] Fix include path diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index 3e991b0..ab0c3cd 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -11,7 +11,7 @@ * Copyright (C) 2006-2007, XtreemOS Consortium. */ -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "super.h" #include "inode.h" commit dad62b458d0bce44981adee29a5e540eb2907847 Author: Marko Obrovac <mar...@in...> Date: Mon Oct 19 12:07:47 2009 +0000 [FIX] Remove unused (and deprecated) super_operations member put_inode (partial ticket #7) diff --git a/fs/kdfs/super.c b/fs/kdfs/super.c index 2de6c0d..045c077 100644 --- a/fs/kdfs/super.c +++ b/fs/kdfs/super.c @@ -1043,23 +1043,6 @@ int kdfs_write_inode(struct inode *inode) } /* - * Put a kdfs inode - * This function is called by the VFS when someone calls iput() - * - * @author Adrien Lebre - * - * @param inode The VFS inode - * @comment This function is mainly used for debugging purpose. - * From kDFS behavior point of view, it is useless and has probably - * to be simply removed. - */ -void kdfs_put_inode(struct inode *inode) -{ - DEBUG (DBG_INFO, "inode id %ld (i_count = %d)\n", - inode->i_ino, atomic_read(&inode->i_count)); -} - -/* * Drop a kdfs inode from the inode cache * This function is called by the VFS when someone calls iput_final() * @@ -1271,7 +1254,6 @@ out: static struct super_operations kdfs_sops = { .delete_inode = kdfs_delete_inode, .drop_inode = kdfs_drop_inode, - .put_inode = kdfs_put_inode, .read_inode = kdfs_read_inode, .show_options = kdfs_show_options, .statfs = kdfs_statfs, commit 448c10668045e7d217149e7bc7a1725730202e5e Author: Marko Obrovac <mar...@in...> Date: Mon Oct 19 11:52:02 2009 +0000 [ADD] Added kDFS linker and kddm set constants diff --git a/include/kddm/io_linker.h b/include/kddm/io_linker.h index 934a154..41abb51 100644 --- a/include/kddm/io_linker.h +++ b/include/kddm/io_linker.h @@ -64,6 +64,7 @@ enum STRING_LIST_LINKER, KDDM_TEST_LINKER, MM_STRUCT_LINKER, + SB_LINKER, MAX_IO_LINKER, /* MUST always be the last one */ } ; diff --git a/include/kddm/kddm_set.h b/include/kddm/kddm_set.h index 3e3f54b..6853124 100644 --- a/include/kddm/kddm_set.h +++ b/include/kddm/kddm_set.h @@ -106,6 +106,7 @@ enum KDDM_TEST4_LOC, // 68 KDDM_TEST4096, // 69 MM_STRUCT_KDDM_ID, // 70 + KDFS_SB_KDDM_ID, MIN_KDDM_ID, /* MUST always be the last one */ }; commit 7795b4846f5cc77bca954e6f8f207dde436ecbb9 Author: Marko Obrovac <mar...@in...> Date: Sun Oct 18 22:23:21 2009 +0200 [FIX] ProcFS: the proc_root_fs variable is not available any more (and non-existent, for that matter). Instead, file systems should register themselves with the "fs/FS_NAME" name syntax, leaving the parent proc_dir as NULL. Also, the write_proc function should return an int, not a ssize_t. The "owner" field is no longer available as part of the proc_dir_entry structure. Following other file systems' example, it was simple removed from the code (apparently, there's another way of keeping track of processes using a proc entry) [FIX] Fixed a printk - when printing long ints, %ld should be used [FIX] super_operations the signature of umount changed - now there's only one argument - the super_block which should be unmounted. There are still other issues concerning the super_operations structure that need to be solved - see ticket #7 [FIX] simple_set_mnt does not return an error code any more. However, looking at other file systems, they seem just to use it "as-is", so probably we should remove the code below it (which used to handle error cases) diff --git a/fs/kdfs/super.c b/fs/kdfs/super.c index 8711213..2de6c0d 100644 --- a/fs/kdfs/super.c +++ b/fs/kdfs/super.c @@ -17,7 +17,7 @@ #include <linux/proc_fs.h> #include <linux/seq_file.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "physical_fs.h" #include "super.h" @@ -80,7 +80,7 @@ kdfs_node_t k_rootsb_nodeid = KERRIGHED_NODE_ID_NONE; struct proc_dir_entry *proc_fs_kdfs = NULL; /* Increase the kdfs_gen counter. Used by checkpoint code */ -ssize_t kdfs_proc_inc_gen(struct file *filp, const char __user *buf, +int kdfs_proc_inc_gen(struct file *filp, const char __user *buf, unsigned long len, void *data) { extern unsigned int kdfs_gen; @@ -89,7 +89,7 @@ ssize_t kdfs_proc_inc_gen(struct file *filp, const char __user *buf, } /* Lists the inodes of the local kDFS superblock */ -ssize_t kdfs_proc_inodes_write(struct file *filp, const char __user *buf, +int kdfs_proc_inodes_write(struct file *filp, const char __user *buf, unsigned long len, void *data) { struct inode *inode; @@ -112,7 +112,7 @@ ssize_t kdfs_proc_inodes_write(struct file *filp, const char __user *buf, printk(" Inode %ld, count %d, mode %u, size %lld\n", inode->i_ino, atomic_read(&inode->i_count), inode->i_mode, inode->i_size); printk("Dumping s_files list\n"); list_for_each_entry(file, &k_sb->sb->s_files, f_u.fu_list) - printk(" File with count %d", atomic_read(&file->f_count)); + printk(" File with count %ld", atomic_read(&file->f_count)); } else printk("There is no kDFS superblock file on the current node\n"); @@ -1165,7 +1165,7 @@ void kdfs_delete_inode(struct inode *inode) PRINT_FUNCTION_EXIT; } -void kdfs_umount(struct vfsmount *vfsmnt, int flags) +void kdfs_umount(/*struct vfsmount *vfsmnt, int flags*/struct super_block *sb) { struct kdfs_super_block *k_sb = NULL; struct kdfs_cw_sb *k_cwsb = NULL; @@ -1175,6 +1175,12 @@ void kdfs_umount(struct vfsmount *vfsmnt, int flags) k_sb = kdfs_grabsb(kerrighed_node_id); BUG_ON(k_sb == NULL); + + if (k_sb->sb != sb) { + DEBUG(DBG_INFO, "The super block to umount is not a kdfs one!\n"); + return; + } + BUG_ON(k_sb->inode_bitmap == NULL); sb_bitmap_save(k_sb); @@ -1387,8 +1393,14 @@ int kdfs_get_sb(struct file_system_type *fs_type, int flags, } //TODO PRIORITY 3: Check where this come from (ext2fs super block?) and see why we would (not?) need it //kdfs_sb->sb->s_flags |= MS_ACTIVE; - error = simple_set_mnt(mnt, k_sb->sb); + simple_set_mnt(mnt, k_sb->sb); + /* + * TODO: simple_set_mnt returns void now! Thus, this code + * will never be executed so it becomes useless!!! + * Check whether there are other places where this + * should be checked, i.e. become usefull + */ if (error < 0) { DEBUG(DBG_ALERT, "Can't retrieve KDFS super bloc\n"); // TODO PRIORITY 1: Put some goto to manage all errors @@ -1549,22 +1561,18 @@ int init_kdfs() */ /* Create /proc/fs/kdfs directory */ - proc_fs_kdfs = proc_mkdir("kdfs", proc_root_fs); + proc_fs_kdfs = proc_mkdir("fs/kdfs", NULL); if (proc_fs_kdfs == NULL) return -ENOMEM; - /* owner is used to avoid unloading the module while the entry is in use */ - proc_fs_kdfs->owner = THIS_MODULE; p = create_proc_entry("inodes", S_IFREG|S_IRUGO, proc_fs_kdfs); if (p == NULL) return -ENOMEM; - p->owner = THIS_MODULE; p->write_proc = kdfs_proc_inodes_write; p = create_proc_entry("gen", S_IFREG|S_IRUGO, proc_fs_kdfs); if (p == NULL) return -ENOMEM; - p->owner = THIS_MODULE; p->write_proc = kdfs_proc_inc_gen; #endif @@ -1596,7 +1604,7 @@ void cleanup_kdfs(void) #ifdef __KDFS_PROCDIR_ remove_proc_entry("gen", proc_fs_kdfs); remove_proc_entry("inodes", proc_fs_kdfs); - remove_proc_entry("kdfs", proc_root_fs); + remove_proc_entry("fs/kdfs", NULL); #endif unregister_filesystem(&kdfs_fs_type); commit 9f15d3b58f3f75135f3cf3e88e0094bf75d80c38 Author: Marko Obrovac <mar...@in...> Date: Sun Oct 18 19:23:52 2009 +0200 [FIX] Conform the nameidata structure changes to the newest kernel structure diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index c6a7f47..0ae67a8 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -114,14 +114,14 @@ long create_phys_dir(const char *pathname, lockdep_on(); error = PTR_ERR(dentry); if (!IS_ERR(dentry)) { - error = vfs_mkdir(nd.dentry->d_inode, dentry, mode); + error = vfs_mkdir(nd.path.dentry->d_inode, dentry, mode); dput(dentry); } lockdep_off(); - mutex_unlock(&nd.dentry->d_inode->i_mutex); + mutex_unlock(&nd.path.dentry->d_inode->i_mutex); lockdep_on(); - path_release(&nd); + path_put(&nd.path); out: chroot_to_saved_root(&saved_path); @@ -208,7 +208,7 @@ out: struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_t gid) { int error = 0; - struct file *file; + struct file *file = NULL; struct path saved_path; const struct cred *old_creds; struct cred *overridden_creds; commit d88702c37c8cb0c089fa2d839920daa1270bf39a Author: Marko Obrovac <mar...@in...> Date: Sun Oct 18 19:02:42 2009 +0200 [FIX] Change to newest kernel structure changes concerning credentials and file system structure changes (tickets #4, #5) diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index 6b91b91..c6a7f47 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -16,12 +16,53 @@ #include <asm/uaccess.h> #include <linux/namei.h> +#include <linux/fs_struct.h> #include "physical_fs.h" #include "debug_kdfs.h" #define KDFS_PART "KDFS - Native File System Accesses" + +void chroot_to_physical_root(struct path *saved_root) +{ + write_lock(¤t->fs->lock); + *saved_root = current->fs->root; + current->fs->root = init_task.fs->root; + write_unlock(¤t->fs->lock); +} + +void chroot_to_saved_root(const struct path *saved_root) +{ + struct path root; + + write_lock(¤t->fs->lock); + root = current->fs->root; + current->fs->root = *saved_root; + write_unlock(¤t->fs->lock); + path_put(&root); +} + +int change_creds(struct cred **overridden, const struct cred **old, + uid_t fsuid, gid_t fsgid) +{ + *overridden = prepare_creds(); + if (!*overridden) + return -ENOMEM; + + (*overridden)->fsuid = fsuid; + (*overridden)->fsgid = fsgid; + *old = override_creds(*overridden); + + return 0; +} + +void revert_old_creds(struct cred *overridden, const struct cred *old) +{ + revert_creds(old); + put_cred(overridden); +} + /* * Create a physical directory * @@ -43,23 +84,18 @@ long create_phys_dir(const char *pathname, int error = 0; struct dentry *dentry; struct nameidata nd; - struct dentry *saved_root; - struct vfsmount *saved_mnt; - uid_t saved_uid; - gid_t saved_gid; + struct path saved_path; + const struct cred *old_creds; + struct cred *overridden_creds; DEBUG(DBG_INFO, "Create dir %s\n", pathname); - saved_mnt = current->fs->rootmnt; - saved_root = current->fs->root; - saved_uid = current_fsuid(); - saved_gid = current_fsgid(); - - current->fs->rootmnt = init_task.fs->rootmnt; - current->fs->root = init_task.fs->root; - current->fsuid = uid; - current->fsgid = gid; - + error = change_creds(&overridden_creds, &old_creds, uid, gid); + if (error) + goto out; + + chroot_to_physical_root(&saved_path); + error = path_lookup(pathname, LOOKUP_PARENT, &nd); if (error) goto out; @@ -88,10 +124,8 @@ long create_phys_dir(const char *pathname, path_release(&nd); out: - current->fsuid = saved_uid; - current->fsgid = saved_gid; - current->fs->rootmnt = saved_mnt; - current->fs->root = saved_root; + chroot_to_saved_root(&saved_path); + revert_old_creds(overridden_creds, old_creds); return error; } @@ -111,26 +145,21 @@ out: long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) { struct file *file = NULL; - struct dentry *dentry; - struct inode *dir; + struct dentry *dentry; + struct inode *dir; long res = 0; - struct dentry *saved_root; - struct vfsmount *saved_mnt; - uid_t saved_uid; - gid_t saved_gid; + struct path saved_path; + const struct cred *old_creds; + struct cred *overridden_creds; DEBUG(DBG_TRACE, "Remove dir %s\n", pathname); - saved_mnt = current->fs->rootmnt; - saved_root = current->fs->root; - saved_uid = current_fsuid(); - saved_gid = current_fsgid(); - - current->fs->rootmnt = init_task.fs->rootmnt; - current->fs->root = init_task.fs->root; - current->fsuid = uid; - current->fsgid = gid; - + res = change_creds(&overridden_creds, &old_creds, uid, gid); + if (res) + goto out; + + chroot_to_physical_root(&saved_path); + file = filp_open(pathname, O_LARGEFILE|O_RDONLY, 0644); if (IS_ERR(file) && PTR_ERR(file) == -ENOENT) { DEBUG(DBG_INFO, "Can't access to phys_dir %s\n", pathname); @@ -155,10 +184,8 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) filp_close(file,current->files); out: - current->fsuid = saved_uid; - current->fsgid = saved_gid; - current->fs->rootmnt = saved_mnt; - current->fs->root = saved_root; + chroot_to_saved_root(&saved_path); + revert_old_creds(overridden_creds, old_creds); return res; } @@ -180,37 +207,35 @@ out: */ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_t gid) { - struct dentry *saved_root; - struct vfsmount *saved_mnt; - uid_t saved_uid; - gid_t saved_gid; + int error = 0; struct file *file; + struct path saved_path; + const struct cred *old_creds; + struct cred *overridden_creds; + + error = change_creds(&overridden_creds, &old_creds, uid, gid); + if (error) + goto out; + + chroot_to_physical_root(&saved_path); DEBUG(DBG_INFO, "Open physical file %s with flags 0x%08x - mode %o\n", filename, flags, mode); - saved_mnt = current->fs->rootmnt; - saved_root = current->fs->root; - saved_uid = current_fsuid(); - saved_gid = current_fsgid(); - - current->fs->rootmnt = init_task.fs->rootmnt; - current->fs->root = init_task.fs->root; - current->fsuid = uid; - current->fsgid = gid; - lockdep_off(); file = filp_open(filename, flags, mode); lockdep_on(); - current->fsuid = saved_uid; - current->fsgid = saved_gid; - current->fs->rootmnt = saved_mnt; - current->fs->root = saved_root; - DEBUG(DBG_INFO, "Open physical file %s done : %p\n", filename, file); +out: + chroot_to_saved_root(&saved_path); + revert_old_creds(overridden_creds, old_creds); + + if (error) + file = ERR_PTR(error); + return file; } @@ -386,22 +411,17 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) struct dentry *dentry; struct inode *dir; int res = 0; - struct dentry *saved_root; - struct vfsmount *saved_mnt; - uid_t saved_uid; - gid_t saved_gid; + struct path saved_path; + const struct cred *old_creds; + struct cred *overridden_creds; DEBUG(DBG_TRACE, "Remove file %s\n", filename); - saved_mnt = current->fs->rootmnt; - saved_root = current->fs->root; - saved_uid = current_fsuid(); - saved_gid = current_fsgid(); - - current->fs->rootmnt = init_task.fs->rootmnt; - current->fs->root = init_task.fs->root; - current->fsuid = uid; - current->fsgid = gid; + res = change_creds(&overridden_creds, &old_creds, uid, gid); + if (res) + goto out; + + chroot_to_physical_root(&saved_path); file = filp_open(filename, O_LARGEFILE|O_RDONLY, 0644); @@ -428,10 +448,8 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) DEBUG(DBG_INFO, "After vfs_unlink res = %d\n", res); out: - current->fsuid = saved_uid; - current->fsgid = saved_gid; - current->fs->rootmnt = saved_mnt; - current->fs->root = saved_root; + chroot_to_saved_root(&saved_path); + revert_old_creds(overridden_creds, old_creds); return res; } commit 0bf1ac82724db2090d893fbdef7a49a1ebc07ca6 Author: Marko Obrovac <mar...@in...> Date: Fri Oct 16 17:05:38 2009 +0000 [MINOR] Fix part (the "read" part) of ticket #3 (nonexisting task_struct members) diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index 689f690..6b91b91 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -52,8 +52,8 @@ long create_phys_dir(const char *pathname, saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; - saved_uid = current->fsuid; - saved_gid = current->fsgid; + saved_uid = current_fsuid(); + saved_gid = current_fsgid(); current->fs->rootmnt = init_task.fs->rootmnt; current->fs->root = init_task.fs->root; @@ -123,8 +123,8 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; - saved_uid = current->fsuid; - saved_gid = current->fsgid; + saved_uid = current_fsuid(); + saved_gid = current_fsgid(); current->fs->rootmnt = init_task.fs->rootmnt; current->fs->root = init_task.fs->root; @@ -192,8 +192,8 @@ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_ saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; - saved_uid = current->fsuid; - saved_gid = current->fsgid; + saved_uid = current_fsuid(); + saved_gid = current_fsgid(); current->fs->rootmnt = init_task.fs->rootmnt; current->fs->root = init_task.fs->root; @@ -395,8 +395,8 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; - saved_uid = current->fsuid; - saved_gid = current->fsgid; + saved_uid = current_fsuid(); + saved_gid = current_fsgid(); current->fs->rootmnt = init_task.fs->rootmnt; current->fs->root = init_task.fs->root; commit a657d43db944e313e4b5975e49c17e0981024f82 Author: Marko Obrovac <mar...@in...> Date: Fri Oct 16 16:22:38 2009 +0000 [FIX] Introduce linux/namei.h (struct nameidata) Closed ticket #2 diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index 36273ca..689f690 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -15,6 +15,7 @@ #endif #include <asm/uaccess.h> +#include <linux/namei.h> #include "physical_fs.h" commit 77cc1932ed4ca5bc6708e4bbbfa5753fe72da878 Author: Marko Obrovac <mar...@in...> Date: Fri Oct 16 15:45:34 2009 +0000 [FIX] Conform the debugging to new kerrighed/kernel guidelines diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index 59a5b9d..65ae72f 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -77,13 +77,13 @@ int kdfs_readpage(struct file *file, struct page *page) ASSERT(page != NULL); k_inode=kdfs_ilocalfind(page->mapping->host->i_ino); if (k_inode->content_setid == KDDM_SET_UNUSED) - DEBUG (DBG_KDFS_ADDRSPACE, DBG_PANIC, "No contentset associated.... looks really strange (inode %lu, name %s)\n", + DEBUG (DBG_PANIC, "No contentset associated.... looks really strange (inode %lu, name %s)\n", k_inode->inode->i_ino, list_entry(k_inode->inode->i_dentry.next, struct dentry, d_alias)->d_name.name); /* TODO PRIORITY 2: test kdfs_get_page returned value */ k_page = kdfs_get_page(k_inode->content_setid, page->index); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, " Readpage k_page->page : %p and page %p\n", k_page->page, page); + DEBUG(DBG_INFO, " Readpage k_page->page : %p and page %p\n", k_page->page, page); BUG_ON(k_page->page != page); SetPageUptodate(k_page->page); @@ -109,7 +109,7 @@ int kdfs_prepare_write (struct file *file, struct kdfs_page *k_page = NULL; struct kdfs_inode *k_inode = NULL; - DEBUG (DBG_KDFS_ADDRSPACE, DBG_INFO, "Prepare_write for file %s (ino %ld), page %ld from %d to %d (count = %d, mapping = %p)\n", + DEBUG (DBG_INFO, "Prepare_write for file %s (ino %ld), page %ld from %d to %d (count = %d, mapping = %p)\n", file->f_dentry->d_name.name, file->f_dentry->d_inode->i_ino, page->index, offset, _to, page_count(page), page->mapping); BUG_ON (page->mapping == NULL); @@ -117,7 +117,7 @@ int kdfs_prepare_write (struct file *file, k_inode=kdfs_ilocalfind(file->f_dentry->d_inode->i_ino); if(k_inode->content_setid == KDDM_SET_UNUSED){ - DEBUG (DBG_KDFS_ADDRSPACE, DBG_PANIC, "No contentset associated.... looks really strange \n"); + DEBUG (DBG_PANIC, "No contentset associated.... looks really strange \n"); } /* TODO PRIORITY 2: test kdfs_get_page returned value */ @@ -141,7 +141,7 @@ int kdfs_commit_write(struct file *file, { struct kdfs_inode *k_inode = NULL; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "commit_write for page %ld for file %s" + DEBUG(DBG_INFO, "commit_write for page %ld for file %s" "(ino %lu) (from %u to %u) (count = %d)\n", page->index, file->f_dentry->d_name.name, file->f_dentry->d_inode->i_ino, offset, _to, @@ -149,7 +149,7 @@ int kdfs_commit_write(struct file *file, k_inode = kdfs_ilocalfind(file->f_dentry->d_inode->i_ino); if (k_inode->content_setid == KDDM_SET_UNUSED) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_PANIC, "No contentset associated.... looks really strange \n"); + DEBUG(DBG_PANIC, "No contentset associated.... looks really strange \n"); if (((loff_t)page->index * PAGE_SIZE) + _to > k_inode->inode->i_size) i_size_write(k_inode->inode, ((loff_t)page->index * PAGE_SIZE) + _to); @@ -257,19 +257,19 @@ struct address_space_operations kdfs_aops = { struct kdfs_page *kdfs_get_page(kddm_set_id_t set_id, objid_t obj_id) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Get page %ld from set %ld\n", obj_id, set_id); + DEBUG(DBG_INFO, "Get page %ld from set %ld\n", obj_id, set_id); return kddm_get_object(kddm_def_ns, set_id, obj_id); } struct kdfs_page *kdfs_grab_page(kddm_set_id_t set_id, objid_t obj_id) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Grab page %ld from set %ld\n", obj_id, set_id); + DEBUG(DBG_INFO, "Grab page %ld from set %ld\n", obj_id, set_id); return kddm_grab_object(kddm_def_ns, set_id, obj_id); } struct kdfs_page *kdfs_findlocal_page(kddm_set_id_t set_id, objid_t obj_id) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Grab page %ld from set %ld\n", obj_id, set_id); + DEBUG(DBG_INFO, "Grab page %ld from set %ld\n", obj_id, set_id); return kddm_find_object(kddm_def_ns, set_id, obj_id); } @@ -280,13 +280,13 @@ void __kdfs_put_page(kddm_set_id_t set_id, objid_t obj_id) void _kdfs_put_page(struct kdfs_page *k_page) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Put page %ld from set %ld\n", k_page->obj_id, k_page->set_id); + DEBUG(DBG_INFO, "Put page %ld from set %ld\n", k_page->obj_id, k_page->set_id); kddm_put_object(kddm_def_ns, k_page->set_id, k_page->obj_id); } void kdfs_mark_page_dirty(kddm_set_id_t set_id, objid_t obj_id) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Sync page %ld from set %lu\n", obj_id, set_id); + DEBUG(DBG_INFO, "Sync page %ld from set %lu\n", obj_id, set_id); kddm_sync_frozen_object(kddm_def_ns, set_id, obj_id); } @@ -328,7 +328,7 @@ kddm_set_t *__create_content_kddm_set(kddm_set_id_t set_id, content_data, sizeof(struct content_iolinker_data), KDDM_FT_LINKED); if (IS_ERR(kddm_set)) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_PANIC, "Can't create content kddm_set for inode %ld\n", k_inode->inode->i_ino); + DEBUG(DBG_PANIC, "Can't create content kddm_set for inode %ld\n", k_inode->inode->i_ino); /* We can free all the memory allocated */ kfree(content_data); @@ -372,7 +372,7 @@ int __local_destroy_content_kddm_set(struct kdfs_inode *k_inode) kddm_set = _local_get_kddm_set(kddm_def_ns, k_inode->content_setid); if (!kddm_set) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "The associated kddm_set for inode %ld hasn't been instantiated\n", k_inode->inode->i_ino); + DEBUG(DBG_INFO, "The associated kddm_set for inode %ld hasn't been instantiated\n", k_inode->inode->i_ino); else{ /* * TODO PRIORITY 1, Adrien / (Renaud kDDM stuff) @@ -426,10 +426,10 @@ int kdfs_iol_page_alloc(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) k_page = kmalloc(sizeof(struct kdfs_page), GFP_KERNEL); ASSERT(k_page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Before Alloc new page %ld from set %lu \n", objid, set->id); + DEBUG(DBG_INFO, "Before Alloc new page %ld from set %lu \n", objid, set->id); k_page->page = find_get_page(k_mapping, objid); if (!k_page->page) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, + DEBUG(DBG_ALERT, "Can't find page for file/directory = %ld and page id = %ld, So created and locked\n", k_mapping->host->i_ino, objid); k_page->page = find_or_create_page(k_mapping, objid, mapping_gfp_mask(k_mapping) & ~__GFP_FS); @@ -437,7 +437,7 @@ int kdfs_iol_page_alloc(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) } else k_page->flags = K_PG_ok; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "After Alloc new page %ld from set %lu (page addr=%p count=%d)\n", objid, set->id, k_page->page, page_count(k_page->page)); + DEBUG(DBG_INFO, "After Alloc new page %ld from set %lu (page addr=%p count=%d)\n", objid, set->id, k_page->page, page_count(k_page->page)); k_page->set_id = set->id; k_page->obj_id = objid; @@ -476,13 +476,13 @@ int kdfs_iol_page_first_touch(kddm_obj_t *objEntry, iolinker_data = (struct content_iolinker_data *) set->private_data; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_TRACE, "file/directory = %ld, pageid = %ld gonna to retrieve inode \n", iolinker_data->ino, objid); + DEBUG(DBG_TRACE, "file/directory = %ld, pageid = %ld gonna to retrieve inode \n", iolinker_data->ino, objid); /* WARNING: quite ugly, we should not access to a local inode without locking the corresponding kddm object*/ k_mapping = ((struct content_iolinker_data *) set->private_data)->k_mapping; ASSERT(k_mapping); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_TRACE, "file/directory = %ld, pageid = %ld mapping = %p\n", iolinker_data->ino, objid, k_mapping); + DEBUG(DBG_TRACE, "file/directory = %ld, pageid = %ld mapping = %p\n", iolinker_data->ino, objid, k_mapping); /* Allocate kdfs_page and retrieve page address */ k_page = kmalloc(sizeof(struct kdfs_page), GFP_KERNEL); @@ -500,13 +500,13 @@ int kdfs_iol_page_first_touch(kddm_obj_t *objEntry, k_page->page = find_get_page(k_mapping, objid); if (!k_page->page) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Can't find page for file/directory = %ld and page id = %ld, So created and locked\n", iolinker_data->ino, objid); + DEBUG(DBG_ALERT, "Can't find page for file/directory = %ld and page id = %ld, So created and locked\n", iolinker_data->ino, objid); k_page->page = find_or_create_page(k_mapping, objid, (mapping_gfp_mask(k_mapping)|__GFP_ZERO) & ~__GFP_FS); k_page->flags = K_PG_locked; } else k_page->flags = K_PG_ok; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "After find Page count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "After find Page count=%d\n", page_count(k_page->page)); page_addr = (char *) kmap(k_page->page); pos = (loff_t)objid * PAGE_SIZE; @@ -516,14 +516,14 @@ int kdfs_iol_page_first_touch(kddm_obj_t *objEntry, kunmap(k_page->page); if (!IS_ERR(k_page->page)) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Can't read page for file/directory = %ld and page id = %ld\n", iolinker_data->ino, objid); + DEBUG(DBG_ALERT, "Can't read page for file/directory = %ld and page id = %ld\n", iolinker_data->ino, objid); objEntry->object = (void *) k_page; /* TODO PRIORITY 2: should release in kdfs_put_page instead? */ //page_cache_release(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "After read Page count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "After read Page count=%d\n", page_count(k_page->page)); PRINT_FUNCTION_EXIT; return res; @@ -543,7 +543,7 @@ int kdfs_iol_page_insert(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) PRINT_FUNCTION_NAME; k_page = (struct kdfs_page *) objEntry->object; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Entering page count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Entering page count=%d\n", page_count(k_page->page)); /* * Set the private field of the page to get callback when it is @@ -562,7 +562,7 @@ int kdfs_iol_page_insert(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) } page_cache_release(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Exiting page count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Exiting page count=%d\n", page_count(k_page->page)); PRINT_FUNCTION_EXIT; return 0; } @@ -587,7 +587,7 @@ int kdfs_iol_page_export (struct rpc_desc *desc, res = rpc_pack(desc, 0, page_addr, PAGE_SIZE); if (res < 0) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "can't pack export page (res=%d)\n", res); + DEBUG(DBG_ALERT, "can't pack export page (res=%d)\n", res); kunmap_atomic(page_addr, KM_USER0); @@ -613,12 +613,12 @@ int kdfs_iol_page_invalidate(kddm_obj_t *objEntry, kddm_set_t *set, objid_t obji PRINT_FUNCTION_NAME; SetPageLocked(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); remove_from_page_cache(k_page->page); ClearPagePrivate(k_page->page); unlock_page(k_page->page); page_cache_release(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page after count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page after count=%d\n", page_count(k_page->page)); /* * TODO PRIORITY 2: Adrien * Page Count should be probably decremented @@ -675,7 +675,7 @@ int kdfs_iol_page_sync(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) ASSERT(k_page != NULL); ASSERT(k_page->page != NULL); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Try to sync page %ld (page addr %p) of set %lu\n", objid, k_page->page, set->id); + DEBUG(DBG_INFO, "Try to sync page %ld (page addr %p) of set %lu\n", objid, k_page->page, set->id); file_pos = ((loff_t)objid * PAGE_SIZE) + k_page->offset; page_addr = (char *) kmap(k_page->page); @@ -707,7 +707,7 @@ int kdfs_iol_page_put(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) ASSERT(objEntry != NULL); k_page = (struct kdfs_page *)objEntry->object; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page count = %d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page count = %d\n", page_count(k_page->page)); //page_cache_release(k_page->page); @@ -735,12 +735,12 @@ int kdfs_iol_page_remove(void *object, struct kddm_set *set, objid_t objid) * we are not called by the VFS */ SetPageLocked(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); remove_from_page_cache(k_page->page); ClearPagePrivate(k_page->page); unlock_page(k_page->page); page_cache_release(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page after count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page after count=%d\n", page_count(k_page->page)); } PRINT_FUNCTION_EXIT; @@ -776,7 +776,7 @@ int content_instantiate(kddm_set_t *kddm_set, void *private_data, int master) ASSERT(kddm_set->private_data != NULL); content_data = (struct content_iolinker_data *) kddm_set->private_data; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Instantiate kddm %ld with ino : %ld\n", kddm_set->id, content_data->ino); + DEBUG(DBG_INFO, "Instantiate kddm %ld with ino : %ld\n", kddm_set->id, content_data->ino); if (kddm_set->def_owner == kerrighed_node_id) { content_data->phys_dirname = kmalloc(PATH_MAX, GFP_KERNEL); @@ -811,7 +811,7 @@ int content_instantiate(kddm_set_t *kddm_set, void *private_data, int master) content_data->current_meta = NULL; } } else { - DEBUG (DBG_KDFS_ADDRSPACE, DBG_INFO, "Nothing TODO, file is not on this node\n"); + DEBUG (DBG_INFO, "Nothing TODO, file is not on this node\n"); content_data->phys_dirname = NULL; content_data->phys_file = NULL; } @@ -820,16 +820,16 @@ int content_instantiate(kddm_set_t *kddm_set, void *private_data, int master) /* Retrieve the local ref to the k_mapping object */ inode = ilookup(k_sb->sb, content_data->ino); if (inode) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "K_mapping from the cache\n"); + DEBUG(DBG_INFO, "K_mapping from the cache\n"); content_data->k_mapping = inode->i_mapping; iput(inode); } else { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "K_mapping will be retrieve from iget\n"); + DEBUG(DBG_INFO, "K_mapping will be retrieve from iget\n"); inode = iget(k_sb->sb, content_data->ino); content_data->k_mapping = inode->i_mapping; } if (!content_data->k_mapping) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_PANIC, "k_mapping was not cleanly initialized\n"); + DEBUG(DBG_PANIC, "k_mapping was not cleanly initialized\n"); __kdfs_putsb(k_sb); PRINT_FUNCTION_EXIT; diff --git a/fs/kdfs/debug_kdfs.h b/fs/kdfs/debug_kdfs.h index 15df5b1..51bf3b0 100644 --- a/fs/kdfs/debug_kdfs.h +++ b/fs/kdfs/debug_kdfs.h @@ -16,6 +16,7 @@ /* Common headers */ #include <asm-generic/bug.h> #include <linux/err.h> +#include <linux/kernel.h> /* Kerrighed headers (dynamical debugging) */ #include <kerrighed/debug.h> @@ -25,54 +26,24 @@ #define DBG_PANIC 0 #define DBG_ALERT 1 #define DBG_WARNING 2 -#define DBG_TRACE 3 +#define DBG_TRACE 3 #define DBG_INFO 4 -/* DEBUG type */ -#define DBG_KDFS_GENERAL "general" /* General debug */ -#define DBG_KDFS_SUPERBLK "superblock" /* Super Block */ -#define DBG_KDFS_INODE "inode" /* Inode Management */ -#define DBG_KDFS_DIR "dir-mgmt" /* Dir management */ -#define DBG_KDFS_FILE "file-mgmt" /* File management */ -#define DBG_KDFS_ADDRSPACE "addrspace" /* Page management */ -#define DBG_KDFS_NATIVEFS "native-fs" /* Native File System Accesses */ - -static inline struct dentry * init_kdfs_debug(void) -{ -#ifdef NDEBUG - return NULL; -#else - /* The default level is set by the second parameter */ - struct dentry *d = debug_define("kDFS", DBG_PANIC); - - DEBUG_MASK("kDFS", DBG_KDFS_GENERAL); - DEBUG_MASK("kDFS", DBG_KDFS_SUPERBLK); - DEBUG_MASK("kDFS", DBG_KDFS_INODE); - DEBUG_MASK("kDFS", DBG_KDFS_DIR); - DEBUG_MASK("kDFS", DBG_KDFS_FILE); - DEBUG_MASK("kDFS", DBG_KDFS_ADDRSPACE); - DEBUG_MASK("kDFS", DBG_KDFS_NATIVEFS); - - return d; -#endif -} - - -//#define KDFS_DEBUG_LEVEL 4 +#define KDFS_DEBUG_LEVEL 4 #ifdef DEBUG #undef DEBUG #endif #ifdef NDEBUG -# define DEBUG(type, level, format, args...) do {} while(0) +# define DEBUG(level, format, args...) do {} while(0) #else -# define DEBUG(type, level, format, args...) \ +# define DEBUG(level, format, args...) \ do { \ - if (match_debug("kDFS", type, level)) { \ - printk ("%s - (%s) - %d : ", KDFS_PART, __PRETTY_FUNCTION__, \ + if (KDFS_DEBUG_LEVEL <= level || level == DBG_PANIC) { \ + pr_debug("%s - (%s) - %d : ", KDFS_PART, __PRETTY_FUNCTION__, \ current->pid) ; \ - printk (format, ## args) ; \ + pr_debug(format, ## args) ; \ } \ if(level == DBG_PANIC)\ BUG();\ @@ -85,8 +56,8 @@ do { \ /* FUNCTION NAME : ENTER and EXIT */ // TODO: redefine the following macros to take into account debug level ! -#define PRINT_FUNCTION_NAME DEBUG(DBG_KDFS_GENERAL, DBG_TRACE, "%s\n", __PRETTY_FUNCTION__) -#define PRINT_FUNCTION_EXIT DEBUG(DBG_KDFS_GENERAL, DBG_TRACE, "%s exited\n", __PRETTY_FUNCTION__) +#define PRINT_FUNCTION_NAME DEBUG(DBG_TRACE, "%s\n", __PRETTY_FUNCTION__) +#define PRINT_FUNCTION_EXIT DEBUG(DBG_TRACE, "%s exited\n", __PRETTY_FUNCTION__) /* ASSERT and BUG ON */ @@ -101,7 +72,7 @@ do { \ #define ASSERT(expr) \ do {\ if ( !(expr) ) {\ - printk ("PANIC : ASSERT " #expr " failed in %s \ + pr_debug("PANIC : ASSERT " #expr " failed in %s \ line %d\n", __PRETTY_FUNCTION__, __LINE__ ); \ BUG(); \ } \ diff --git a/fs/kdfs/dir.c b/fs/kdfs/dir.c index 1679156..644d248 100644 --- a/fs/kdfs/dir.c +++ b/fs/kdfs/dir.c @@ -59,7 +59,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file struct page *tmp_page = NULL; void *page_addr = NULL ; - DEBUG (DBG_KDFS_DIR, DBG_INFO, + DEBUG (DBG_INFO, "Look up for entry %s in directory %ld\n", filename, dir->inode->i_ino); @@ -75,11 +75,11 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file } /* Parse directory dentries */ - DEBUG (DBG_KDFS_DIR, DBG_INFO, "Start to look inside directory\n"); + DEBUG (DBG_INFO, "Start to look inside directory\n"); do { *k_page = kdfs_grab_page(dir->content_setid, pageid); if (IS_ERR(*k_page)) - DEBUG (DBG_KDFS_DIR, DBG_PANIC, + DEBUG (DBG_PANIC, "Can't grab page %ld for the directory %ld", pageid, dir->content_setid); @@ -89,7 +89,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file /* For each entry contained in the page */ do { - DEBUG (DBG_KDFS_DIR, DBG_INFO, + DEBUG (DBG_INFO, "Grab page %ld:" "page addr %p, dentry_addr %p (file size %lld)\n", pageid, page_addr, dentry_addr, @@ -98,7 +98,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file dir_entry = (struct kdfs_dir_entry *) dentry_addr; /* Did we find the right entry */ - DEBUG (DBG_KDFS_DIR, DBG_INFO, "filelen %d dirfilelen %d, filename %s dirname %s, dirlen %d (dirino %ld)\n", + DEBUG (DBG_INFO, "filelen %d dirfilelen %d, filename %s dirname %s, dirlen %d (dirino %ld)\n", filename_len, dir_entry->name_len, filename, dir_entry->name,dir_entry->rec_len, dir_entry->ino); if (dir_entry->name_len == filename_len && strncmp (dir_entry->name, filename, filename_len) == 0) @@ -122,7 +122,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file } // end if there are some entries - DEBUG (DBG_KDFS_DIR, DBG_INFO, "Look up for file %s in directory %ld : notfound \n", + DEBUG (DBG_INFO, "Look up for file %s in directory %ld : notfound \n", filename, dir->inode->i_ino); // TODO PRIORITY 1: put_kddm_set required a reference on the set. // I have to add a reference inside kdfs_page structure :( @@ -130,7 +130,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file return NULL; found: - DEBUG (DBG_KDFS_DIR, DBG_INFO, + DEBUG (DBG_INFO, "Look up for file %s in directory %ld: found : %p\n", filename, dir->inode->i_ino, dir_entry); return dir_entry; @@ -162,7 +162,7 @@ struct kdfs_dir_entry *kdfs_find_entry(struct kdfs_inode *dir, struct page *tmp_page = NULL; void *page_addr = NULL; - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "Look up for entry %s in directory %ld\n", filename, dir->inode->i_ino); @@ -178,12 +178,12 @@ struct kdfs_dir_entry *kdfs_find_entry(struct kdfs_inode *dir, } /* Parse directory dentries */ - DEBUG (DBG_KDFS_DIR, DBG_INFO, + DEBUG (DBG_INFO, "Start to look inside directory \n"); do { *k_page = kdfs_get_page(dir->content_setid, pageid); if (IS_ERR(*k_page)) - DEBUG(DBG_KDFS_DIR, DBG_PANIC, + DEBUG(DBG_PANIC, "Can't get page %ld for the directory %ld\n", pageid, dir->content_setid); @@ -193,14 +193,14 @@ struct kdfs_dir_entry *kdfs_find_entry(struct kdfs_inode *dir, /* For each entry contained in the page */ do { - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "page addr %p, dentry_addr %p (file size %lld)\n", page_addr, dentry_addr, dir->inode->i_size); /* Get the directory entry */ dir_entry = (struct kdfs_dir_entry *) dentry_addr; /* Did we find the right entry */ - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "filelen %d dirfilelen %d, filename %s dirname %s, dirlen %d (dirino %ld)\n", filename_len, dir_entry->name_len, filename, dir_entry->name,dir_entry->rec_len, dir_entry->ino); if (dir_entry->name_len == filename_len && @@ -225,7 +225,7 @@ struct kdfs_dir_entry *kdfs_find_entry(struct kdfs_inode *dir, } // end if there are some entries - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "Look up for file %s in directory %ld : notfound\n", filename, dir->inod... [truncated message content] |
From: Marko O. <d0...@us...> - 2009-10-20 14:58:24
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 3a01e00aeeeb7e3f4a2026d46598692a0feb4c8f (commit) via 431f64eadaf0d907981b11167177d3e78333fafc (commit) from 32569709409a6f590c3a367fd3f6f714b6c0d931 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 3a01e00aeeeb7e3f4a2026d46598692a0feb4c8f Author: Marko Obrovac <mar...@in...> Date: Tue Oct 20 14:52:38 2009 +0000 [FIX] Change the makefile to conform to new compiling rules (kdfs is now built in the kernel, not a module) diff --git a/fs/kdfs/Makefile b/fs/kdfs/Makefile index ca9d271..f59b146 100644 --- a/fs/kdfs/Makefile +++ b/fs/kdfs/Makefile @@ -1,7 +1 @@ -obj-m += krgbuiltin.o - - -krgbuiltin-objs := physical_fs.o super.o inode.o dir.o file.o address_space.o extent.o cow.o -krgbuiltin-objs += $(krgbuiltin-y) - -EXTRA_CFLAGS += -I$(M) +obj-y := physical_fs.o super.o inode.o dir.o file.o address_space.o extent.o cow.o commit 431f64eadaf0d907981b11167177d3e78333fafc Author: Marko Obrovac <mar...@in...> Date: Tue Oct 20 14:51:37 2009 +0000 [FIX] fixed name clashes with the kerrighed functions (and marked all the internal functions as internal) diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index 0ae67a8..c299877 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -24,7 +24,7 @@ #define KDFS_PART "KDFS - Native File System Accesses" -void chroot_to_physical_root(struct path *saved_root) +void __change_to_physical_root(struct path *saved_root) { write_lock(¤t->fs->lock); *saved_root = current->fs->root; @@ -32,7 +32,7 @@ void chroot_to_physical_root(struct path *saved_root) write_unlock(¤t->fs->lock); } -void chroot_to_saved_root(const struct path *saved_root) +void __change_to_saved_root(const struct path *saved_root) { struct path root; @@ -43,7 +43,7 @@ void chroot_to_saved_root(const struct path *saved_root) path_put(&root); } -int change_creds(struct cred **overridden, const struct cred **old, +int __change_creds(struct cred **overridden, const struct cred **old, uid_t fsuid, gid_t fsgid) { *overridden = prepare_creds(); @@ -57,7 +57,7 @@ int change_creds(struct cred **overridden, const struct cred **old, return 0; } -void revert_old_creds(struct cred *overridden, const struct cred *old) +void __revert_old_creds(struct cred *overridden, const struct cred *old) { revert_creds(old); put_cred(overridden); @@ -90,11 +90,11 @@ long create_phys_dir(const char *pathname, DEBUG(DBG_INFO, "Create dir %s\n", pathname); - error = change_creds(&overridden_creds, &old_creds, uid, gid); + error = __change_creds(&overridden_creds, &old_creds, uid, gid); if (error) goto out; - chroot_to_physical_root(&saved_path); + __change_to_physical_root(&saved_path); error = path_lookup(pathname, LOOKUP_PARENT, &nd); if (error) @@ -124,8 +124,8 @@ long create_phys_dir(const char *pathname, path_put(&nd.path); out: - chroot_to_saved_root(&saved_path); - revert_old_creds(overridden_creds, old_creds); + __change_to_saved_root(&saved_path); + __revert_old_creds(overridden_creds, old_creds); return error; } @@ -154,11 +154,11 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) DEBUG(DBG_TRACE, "Remove dir %s\n", pathname); - res = change_creds(&overridden_creds, &old_creds, uid, gid); + res = __change_creds(&overridden_creds, &old_creds, uid, gid); if (res) goto out; - chroot_to_physical_root(&saved_path); + __change_to_physical_root(&saved_path); file = filp_open(pathname, O_LARGEFILE|O_RDONLY, 0644); if (IS_ERR(file) && PTR_ERR(file) == -ENOENT) { @@ -184,8 +184,8 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) filp_close(file,current->files); out: - chroot_to_saved_root(&saved_path); - revert_old_creds(overridden_creds, old_creds); + __change_to_saved_root(&saved_path); + __revert_old_creds(overridden_creds, old_creds); return res; } @@ -213,11 +213,11 @@ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_ const struct cred *old_creds; struct cred *overridden_creds; - error = change_creds(&overridden_creds, &old_creds, uid, gid); + error = __change_creds(&overridden_creds, &old_creds, uid, gid); if (error) goto out; - chroot_to_physical_root(&saved_path); + __change_to_physical_root(&saved_path); DEBUG(DBG_INFO, "Open physical file %s with flags 0x%08x - mode %o\n", @@ -230,8 +230,8 @@ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_ DEBUG(DBG_INFO, "Open physical file %s done : %p\n", filename, file); out: - chroot_to_saved_root(&saved_path); - revert_old_creds(overridden_creds, old_creds); + __change_to_saved_root(&saved_path); + __revert_old_creds(overridden_creds, old_creds); if (error) file = ERR_PTR(error); @@ -417,11 +417,11 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) DEBUG(DBG_TRACE, "Remove file %s\n", filename); - res = change_creds(&overridden_creds, &old_creds, uid, gid); + res = __change_creds(&overridden_creds, &old_creds, uid, gid); if (res) goto out; - chroot_to_physical_root(&saved_path); + __change_to_physical_root(&saved_path); file = filp_open(filename, O_LARGEFILE|O_RDONLY, 0644); @@ -448,8 +448,8 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) DEBUG(DBG_INFO, "After vfs_unlink res = %d\n", res); out: - chroot_to_saved_root(&saved_path); - revert_old_creds(overridden_creds, old_creds); + __change_to_saved_root(&saved_path); + __revert_old_creds(overridden_creds, old_creds); return res; } ----------------------------------------------------------------------- Summary of changes: fs/kdfs/Makefile | 8 +------- fs/kdfs/physical_fs.c | 40 ++++++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 27 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-20 13:42:06
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 32569709409a6f590c3a367fd3f6f714b6c0d931 (commit) from 683476bab130ad5c1e5821fed314940981247b60 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 32569709409a6f590c3a367fd3f6f714b6c0d931 Author: Marko Obrovac <mar...@in...> Date: Tue Oct 20 13:38:16 2009 +0000 [FIX] rename include dir from cntr to kddm diff --git a/fs/kdfs/cow.c b/fs/kdfs/cow.c index 862277e..478b814 100644 --- a/fs/kdfs/cow.c +++ b/fs/kdfs/cow.c @@ -10,7 +10,7 @@ #include <linux/pagemap.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "inode.h" #include "address_space.h" diff --git a/fs/kdfs/extent.c b/fs/kdfs/extent.c index b9d0556..4d142e7 100644 --- a/fs/kdfs/extent.c +++ b/fs/kdfs/extent.c @@ -10,7 +10,7 @@ #include <linux/pagemap.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "inode.h" #include "address_space.h" ----------------------------------------------------------------------- Summary of changes: fs/kdfs/cow.c | 2 +- fs/kdfs/extent.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- kdfs |
From: alebre <al...@us...> - 2009-10-20 12:57:15
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 683476bab130ad5c1e5821fed314940981247b60 (commit) from 308d9d7359144747056bcfeec4b797d2253d041e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 683476bab130ad5c1e5821fed314940981247b60 Author: alebre <alebre@debian.localdomain> Date: Tue Oct 20 14:56:48 2009 +0200 [REFACTORING] address_space.c (begin/end write and SetPageLocked) diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index a98c5ab..5b60704 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -96,20 +96,22 @@ int kdfs_readpage(struct file *file, struct page *page) return 0; } +/* TODO Suggested by Adrien for xxxx + * Priority : 3 + * Merge new kdfs_write_begin function with the older kdfs_prepare_write. + */ /* * page has been found or allocated from/in the page cache and locked * However, the data should be pre-read from the storage * Thus, one first-touch can happen. ISSUE, put data in the same page */ -int kdfs_prepare_write (struct file *file, - struct page *page, - unsigned offset, - unsigned _to) +int __kdfs_prepare_write (struct file *file, struct page *page, + unsigned offset, unsigned _to) { struct kdfs_page *k_page = NULL; struct kdfs_inode *k_inode = NULL; - DEBUG (DBG_INFO, "Prepare_write for file %s (ino %ld), page %ld from %d to %d (count = %d, mapping = %p)\n", + DEBUG (DBG_INFO, "begin_write for file %s (ino %ld), page %ld from %d to %d (count = %d, mapping = %p)\n", file->f_dentry->d_name.name, file->f_dentry->d_inode->i_ino, page->index, offset, _to, page_count(page), page->mapping); BUG_ON (page->mapping == NULL); @@ -133,8 +135,36 @@ int kdfs_prepare_write (struct file *file, return 0; } -// TODO cf. http://www.mail-archive.com/git...@vg.../msg03083.html -int kdfs_commit_write(struct file *file, +int kdfs_write_begin (struct file *file, + struct address_space *mapping, + loff_t pos, unsigned len, unsigned flags, + struct page **pagep, void **fsdata) +{ + struct page *page; + pgoff_t index; + unsigned from; + + index = pos >> PAGE_CACHE_SHIFT; + from = pos & (PAGE_CACHE_SIZE - 1); + + page = grab_cache_page_write_begin(mapping, index, flags); + if (!page) + return -ENOMEM; + + *pagep = page; + return __kdfs_prepare_write(file, page, from, from+len); +} + + +/* TODO Suggested by Adrien for xxxx + * Priority : 3 + * Merge new kdfs_write_begin function with the older kdfs_prepare_write. + */ +/* TODO Suggested by Adrien for Adrien, + * an old TODO, ... probably just remove it ;) + * cf. http://www.mail-archive.com/git...@vg.../msg03083.html + */ +int __kdfs_commit_write(struct file *file, struct page *page, unsigned offset, unsigned _to) @@ -170,6 +200,30 @@ int kdfs_commit_write(struct file *file, return 0; } +int kdfs_write_end(struct file *file, + struct address_space *mapping, + loff_t pos, unsigned len, unsigned copied, + struct page *page, void *fsdata) +{ + unsigned from = pos & (PAGE_CACHE_SIZE - 1); + + /* zero the stale part of the page if we did a short copy */ + if (copied < len) { + void *kaddr = kmap_atomic(page, KM_USER0); + memset(kaddr + from + copied, 0, len - copied); + flush_dcache_page(page); + kunmap_atomic(kaddr, KM_USER0); + } + + __kdfs_commit_write(file, page, from, from+copied); + + unlock_page(page); + page_cache_release(page); + + return copied; +} + + int kdfs_writepage(struct page *page, struct writeback_control *wbc) { @@ -240,9 +294,9 @@ int kdfs_releasepage(struct page *page, gfp_t mask) } struct address_space_operations kdfs_aops = { - .commit_write = kdfs_commit_write, + .write_begin = kdfs_write_begin, + .write_end = kdfs_write_end, .invalidatepage = kdfs_invalidatepage, - .prepare_write = kdfs_prepare_write, .readpage = kdfs_readpage, .releasepage = kdfs_releasepage, .writepage = kdfs_writepage, @@ -612,7 +666,7 @@ int kdfs_iol_page_invalidate(kddm_obj_t *objEntry, kddm_set_t *set, objid_t obji struct kdfs_page *k_page = (struct kdfs_page *)objEntry->object; PRINT_FUNCTION_NAME; - SetPageLocked(k_page->page); + trylock_page(k_page->page); DEBUG(DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); remove_from_page_cache(k_page->page); ClearPagePrivate(k_page->page); @@ -734,7 +788,7 @@ int kdfs_iol_page_remove(void *object, struct kddm_set *set, objid_t objid) * so we need to remove the page from the cache by hand, because * we are not called by the VFS */ - SetPageLocked(k_page->page); + trylock_page(k_page->page); DEBUG(DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); remove_from_page_cache(k_page->page); ClearPagePrivate(k_page->page); diff --git a/fs/kdfs/address_space.h b/fs/kdfs/address_space.h index 68ca007..5a7ac7a 100644 --- a/fs/kdfs/address_space.h +++ b/fs/kdfs/address_space.h @@ -9,6 +9,7 @@ * @maintainer Adrien Lebre * * Copyright (C) 2006-2007, XtreemOS Consortium. + * Copyright (C) 2008-20xx, XtreemOS Consortium, Ascola Research Group. */ #ifndef __KDFS_ADDR_SPACE__ diff --git a/fs/kdfs/dir.c b/fs/kdfs/dir.c index 3c5a67a..6eb9439 100644 --- a/fs/kdfs/dir.c +++ b/fs/kdfs/dir.c @@ -595,7 +595,7 @@ int kdfs_make_empty(struct kdfs_inode *k_pdir, struct kdfs_inode *k_dir) */ int kdfs_dir_empty(struct kdfs_inode *k_dir) { - DEBUG(DBG_INFO, "Directory size: %llu empty if: %d\n", k_dir->inode->i_size, KDFS_DIRENT_SIZE * 2); + DEBUG(DBG_INFO, "Directory size: %llu empty if: %ld\n", k_dir->inode->i_size, KDFS_DIRENT_SIZE * 2); if (k_dir->inode->i_size > KDFS_DIRENT_SIZE * 2) return 0; return 1; diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index 10ec71a..f126cb8 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -180,8 +180,8 @@ struct kdfs_inode *__kdfs_mknod(struct kdfs_inode *k_pdir, break; } - k_nnod->inode->i_uid = current->fsuid; - k_nnod->inode->i_gid = current->fsgid; + k_nnod->inode->i_uid = current_fsuid(); + k_nnod->inode->i_gid = current_fsgid(); if (k_pdir->inode->i_mode & S_ISGID) { k_nnod->inode->i_gid = k_pdir->inode->i_gid; ----------------------------------------------------------------------- Summary of changes: fs/kdfs/address_space.c | 76 ++++++++++++++++++++++++++++++++++++++++------- fs/kdfs/address_space.h | 1 + fs/kdfs/dir.c | 2 +- fs/kdfs/inode.c | 4 +- 4 files changed, 69 insertions(+), 14 deletions(-) hooks/post-receive -- kdfs |
From: Pierre R. <pr...@us...> - 2009-10-20 11:40:11
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 308d9d7359144747056bcfeec4b797d2253d041e (commit) via 3d3a34c2490a0ea96b39ba2acbacfb37b1ddd953 (commit) from 109f85f01d10bf1fd2e3d59f59e49eb0eb62e9ff (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 308d9d7359144747056bcfeec4b797d2253d041e Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 13:38:44 2009 +0200 [FIX] Correct the code using read_inode which is not in the new kernels. Closed ticket #7 diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index 0460ec1..a98c5ab 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -825,7 +825,7 @@ int content_instantiate(kddm_set_t *kddm_set, void *private_data, int master) iput(inode); } else { DEBUG(DBG_INFO, "K_mapping will be retrieve from iget\n"); - inode = iget(k_sb->sb, content_data->ino); + inode = kdfs_getinode(k_sb->sb, content_data->ino); content_data->k_mapping = inode->i_mapping; } if (!content_data->k_mapping) diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index 3cf9616..10ec71a 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -1142,7 +1142,7 @@ int kdfs_iol_inode_first_touch(kddm_obj_t *objEntry, if (k_inode->inode) iput(k_inode->inode); else - k_inode->inode = iget(k_sb->sb, objid); + k_inode->inode = kdfs_getinode(k_sb->sb, objid); k_inode->flags = K_INODE_OK; } diff --git a/fs/kdfs/super.c b/fs/kdfs/super.c index 045c077..da2f32e 100644 --- a/fs/kdfs/super.c +++ b/fs/kdfs/super.c @@ -921,14 +921,14 @@ int kdfs_statfs(struct dentry *dfs, struct kstatfs *buf) * @param inode the VFS inode * */ -void kdfs_read_inode(struct inode *inode) +struct inode *kdfs_getinode(struct super_block *sb, unsigned long ino) { + struct inode *inode = NULL; struct file *file = NULL; char *phys_filename = NULL; struct kdfs_physical_inode phys_inode; PRINT_FUNCTION_NAME ; - ASSERT (inode != NULL) ; /* * TODO PRIORITY 2: Adrien @@ -936,6 +936,11 @@ void kdfs_read_inode(struct inode *inode) * For the moment, the workaround consists in using sb->s_fs_info to * reach it. It is probably not the best and cleanest solution. */ + inode = iget_locked(sb, ino); + if (!inode) + return ERR_PTR(-ENOMEM); + if (!(inode->i_state & I_NEW)) + return inode; /* Retrieve the inode meta file */ phys_filename = kmalloc(PATH_MAX, GFP_KERNEL); @@ -975,7 +980,9 @@ void kdfs_read_inode(struct inode *inode) inode->i_ino, ((struct kdfs_super_block*)inode->i_sb->s_fs_info)->k_opt->part_name); kfree(phys_filename); + unlock_new_inode(inode); PRINT_FUNCTION_EXIT; + return inode; } /* @@ -1254,7 +1261,6 @@ out: static struct super_operations kdfs_sops = { .delete_inode = kdfs_delete_inode, .drop_inode = kdfs_drop_inode, - .read_inode = kdfs_read_inode, .show_options = kdfs_show_options, .statfs = kdfs_statfs, .sync_fs = kdfs_sync_fs, diff --git a/fs/kdfs/super.h b/fs/kdfs/super.h index 36fc1f0..f480a74 100644 --- a/fs/kdfs/super.h +++ b/fs/kdfs/super.h @@ -216,6 +216,7 @@ void cleanup_kdfs(void); void kdfs_getphysicalpath(struct kdfs_super_block *k_sb, unsigned long ino, char *physical_filename); int kdfs_write_inode(struct inode *inode); +struct inode *kdfs_getinode(struct super_block *sb, unsigned long ino); /* Get a free inode id from kdfs_sb partition */ ino_t kdfs_get_freeino(struct kdfs_super_block *k_sb); commit 3d3a34c2490a0ea96b39ba2acbacfb37b1ddd953 Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 13:27:11 2009 +0200 [FIX] Correct all include paths to kddm.h diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index 65ae72f..0460ec1 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -13,7 +13,7 @@ #include <linux/pagemap.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "super.h" #include "inode.h" diff --git a/fs/kdfs/dir.c b/fs/kdfs/dir.c index 644d248..3c5a67a 100644 --- a/fs/kdfs/dir.c +++ b/fs/kdfs/dir.c @@ -13,7 +13,7 @@ #include <linux/buffer_head.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "super.h" #include "inode.h" diff --git a/fs/kdfs/file.c b/fs/kdfs/file.c index ea9898e..a1707bc 100644 --- a/fs/kdfs/file.c +++ b/fs/kdfs/file.c @@ -13,7 +13,7 @@ #include <linux/buffer_head.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "super.h" #include "inode.h" ----------------------------------------------------------------------- Summary of changes: fs/kdfs/address_space.c | 4 ++-- fs/kdfs/dir.c | 2 +- fs/kdfs/file.c | 2 +- fs/kdfs/inode.c | 2 +- fs/kdfs/super.c | 12 +++++++++--- fs/kdfs/super.h | 1 + 6 files changed, 15 insertions(+), 8 deletions(-) hooks/post-receive -- kdfs |
From: Pierre R. <pr...@us...> - 2009-10-20 09:24:42
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 109f85f01d10bf1fd2e3d59f59e49eb0eb62e9ff (commit) via 6332d47e895e0e17ae76521800e1ba6eb54c7a23 (commit) from 2adf3013922a9ca6dffb7e42c2847134a0167274 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 109f85f01d10bf1fd2e3d59f59e49eb0eb62e9ff Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 11:04:01 2009 +0200 [FIX] Fix printing of i_version which is u64 diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index ab0c3cd..3cf9616 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -37,7 +37,7 @@ void print_inode_cont(struct inode *node) printk(" i_nlink: %u\n", node->i_nlink); printk(" i_uid: %u\n", node->i_uid); printk(" i_gid: %u\n", node->i_gid); - printk("i_version: %ld\n", node->i_version); + printk("i_version: %llu\n", (unsigned long long)node->i_version); printk(" i_mode: %x\n\n\n", node->i_mode); } commit 6332d47e895e0e17ae76521800e1ba6eb54c7a23 Author: Pierre Riteau <Pie...@ir...> Date: Tue Oct 20 11:03:09 2009 +0200 [FIX] Fix include path diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index 3e991b0..ab0c3cd 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -11,7 +11,7 @@ * Copyright (C) 2006-2007, XtreemOS Consortium. */ -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "super.h" #include "inode.h" ----------------------------------------------------------------------- Summary of changes: fs/kdfs/inode.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-19 12:11:50
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 2adf3013922a9ca6dffb7e42c2847134a0167274 (commit) from 7d4f4669897ca3bcc7d540c4bf0f81bc4b65268a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 2adf3013922a9ca6dffb7e42c2847134a0167274 Author: Marko Obrovac <mar...@in...> Date: Mon Oct 19 12:07:47 2009 +0000 [FIX] Remove unused (and deprecated) super_operations member put_inode (partial ticket #7) diff --git a/fs/kdfs/super.c b/fs/kdfs/super.c index 2de6c0d..045c077 100644 --- a/fs/kdfs/super.c +++ b/fs/kdfs/super.c @@ -1043,23 +1043,6 @@ int kdfs_write_inode(struct inode *inode) } /* - * Put a kdfs inode - * This function is called by the VFS when someone calls iput() - * - * @author Adrien Lebre - * - * @param inode The VFS inode - * @comment This function is mainly used for debugging purpose. - * From kDFS behavior point of view, it is useless and has probably - * to be simply removed. - */ -void kdfs_put_inode(struct inode *inode) -{ - DEBUG (DBG_INFO, "inode id %ld (i_count = %d)\n", - inode->i_ino, atomic_read(&inode->i_count)); -} - -/* * Drop a kdfs inode from the inode cache * This function is called by the VFS when someone calls iput_final() * @@ -1271,7 +1254,6 @@ out: static struct super_operations kdfs_sops = { .delete_inode = kdfs_delete_inode, .drop_inode = kdfs_drop_inode, - .put_inode = kdfs_put_inode, .read_inode = kdfs_read_inode, .show_options = kdfs_show_options, .statfs = kdfs_statfs, ----------------------------------------------------------------------- Summary of changes: fs/kdfs/super.c | 18 ------------------ 1 files changed, 0 insertions(+), 18 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-19 11:56:06
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 7d4f4669897ca3bcc7d540c4bf0f81bc4b65268a (commit) from 8f6cb18b661235e591b33504349f031d2021e59a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 7d4f4669897ca3bcc7d540c4bf0f81bc4b65268a Author: Marko Obrovac <mar...@in...> Date: Mon Oct 19 11:52:02 2009 +0000 [ADD] Added kDFS linker and kddm set constants diff --git a/include/kddm/io_linker.h b/include/kddm/io_linker.h index 934a154..41abb51 100644 --- a/include/kddm/io_linker.h +++ b/include/kddm/io_linker.h @@ -64,6 +64,7 @@ enum STRING_LIST_LINKER, KDDM_TEST_LINKER, MM_STRUCT_LINKER, + SB_LINKER, MAX_IO_LINKER, /* MUST always be the last one */ } ; diff --git a/include/kddm/kddm_set.h b/include/kddm/kddm_set.h index 3e3f54b..6853124 100644 --- a/include/kddm/kddm_set.h +++ b/include/kddm/kddm_set.h @@ -106,6 +106,7 @@ enum KDDM_TEST4_LOC, // 68 KDDM_TEST4096, // 69 MM_STRUCT_KDDM_ID, // 70 + KDFS_SB_KDDM_ID, MIN_KDDM_ID, /* MUST always be the last one */ }; ----------------------------------------------------------------------- Summary of changes: include/kddm/io_linker.h | 1 + include/kddm/kddm_set.h | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-18 20:38:39
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 8f6cb18b661235e591b33504349f031d2021e59a (commit) from 5bd840461f5e33cf9ee0a83751daae473b1407c6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8f6cb18b661235e591b33504349f031d2021e59a Author: Marko Obrovac <mar...@in...> Date: Sun Oct 18 22:23:21 2009 +0200 [FIX] ProcFS: the proc_root_fs variable is not available any more (and non-existent, for that matter). Instead, file systems should register themselves with the "fs/FS_NAME" name syntax, leaving the parent proc_dir as NULL. Also, the write_proc function should return an int, not a ssize_t. The "owner" field is no longer available as part of the proc_dir_entry structure. Following other file systems' example, it was simple removed from the code (apparently, there's another way of keeping track of processes using a proc entry) [FIX] Fixed a printk - when printing long ints, %ld should be used [FIX] super_operations the signature of umount changed - now there's only one argument - the super_block which should be unmounted. There are still other issues concerning the super_operations structure that need to be solved - see ticket #7 [FIX] simple_set_mnt does not return an error code any more. However, looking at other file systems, they seem just to use it "as-is", so probably we should remove the code below it (which used to handle error cases) diff --git a/fs/kdfs/super.c b/fs/kdfs/super.c index 8711213..2de6c0d 100644 --- a/fs/kdfs/super.c +++ b/fs/kdfs/super.c @@ -17,7 +17,7 @@ #include <linux/proc_fs.h> #include <linux/seq_file.h> -#include <ctnr/kddm.h> +#include <kddm/kddm.h> #include "physical_fs.h" #include "super.h" @@ -80,7 +80,7 @@ kdfs_node_t k_rootsb_nodeid = KERRIGHED_NODE_ID_NONE; struct proc_dir_entry *proc_fs_kdfs = NULL; /* Increase the kdfs_gen counter. Used by checkpoint code */ -ssize_t kdfs_proc_inc_gen(struct file *filp, const char __user *buf, +int kdfs_proc_inc_gen(struct file *filp, const char __user *buf, unsigned long len, void *data) { extern unsigned int kdfs_gen; @@ -89,7 +89,7 @@ ssize_t kdfs_proc_inc_gen(struct file *filp, const char __user *buf, } /* Lists the inodes of the local kDFS superblock */ -ssize_t kdfs_proc_inodes_write(struct file *filp, const char __user *buf, +int kdfs_proc_inodes_write(struct file *filp, const char __user *buf, unsigned long len, void *data) { struct inode *inode; @@ -112,7 +112,7 @@ ssize_t kdfs_proc_inodes_write(struct file *filp, const char __user *buf, printk(" Inode %ld, count %d, mode %u, size %lld\n", inode->i_ino, atomic_read(&inode->i_count), inode->i_mode, inode->i_size); printk("Dumping s_files list\n"); list_for_each_entry(file, &k_sb->sb->s_files, f_u.fu_list) - printk(" File with count %d", atomic_read(&file->f_count)); + printk(" File with count %ld", atomic_read(&file->f_count)); } else printk("There is no kDFS superblock file on the current node\n"); @@ -1165,7 +1165,7 @@ void kdfs_delete_inode(struct inode *inode) PRINT_FUNCTION_EXIT; } -void kdfs_umount(struct vfsmount *vfsmnt, int flags) +void kdfs_umount(/*struct vfsmount *vfsmnt, int flags*/struct super_block *sb) { struct kdfs_super_block *k_sb = NULL; struct kdfs_cw_sb *k_cwsb = NULL; @@ -1175,6 +1175,12 @@ void kdfs_umount(struct vfsmount *vfsmnt, int flags) k_sb = kdfs_grabsb(kerrighed_node_id); BUG_ON(k_sb == NULL); + + if (k_sb->sb != sb) { + DEBUG(DBG_INFO, "The super block to umount is not a kdfs one!\n"); + return; + } + BUG_ON(k_sb->inode_bitmap == NULL); sb_bitmap_save(k_sb); @@ -1387,8 +1393,14 @@ int kdfs_get_sb(struct file_system_type *fs_type, int flags, } //TODO PRIORITY 3: Check where this come from (ext2fs super block?) and see why we would (not?) need it //kdfs_sb->sb->s_flags |= MS_ACTIVE; - error = simple_set_mnt(mnt, k_sb->sb); + simple_set_mnt(mnt, k_sb->sb); + /* + * TODO: simple_set_mnt returns void now! Thus, this code + * will never be executed so it becomes useless!!! + * Check whether there are other places where this + * should be checked, i.e. become usefull + */ if (error < 0) { DEBUG(DBG_ALERT, "Can't retrieve KDFS super bloc\n"); // TODO PRIORITY 1: Put some goto to manage all errors @@ -1549,22 +1561,18 @@ int init_kdfs() */ /* Create /proc/fs/kdfs directory */ - proc_fs_kdfs = proc_mkdir("kdfs", proc_root_fs); + proc_fs_kdfs = proc_mkdir("fs/kdfs", NULL); if (proc_fs_kdfs == NULL) return -ENOMEM; - /* owner is used to avoid unloading the module while the entry is in use */ - proc_fs_kdfs->owner = THIS_MODULE; p = create_proc_entry("inodes", S_IFREG|S_IRUGO, proc_fs_kdfs); if (p == NULL) return -ENOMEM; - p->owner = THIS_MODULE; p->write_proc = kdfs_proc_inodes_write; p = create_proc_entry("gen", S_IFREG|S_IRUGO, proc_fs_kdfs); if (p == NULL) return -ENOMEM; - p->owner = THIS_MODULE; p->write_proc = kdfs_proc_inc_gen; #endif @@ -1596,7 +1604,7 @@ void cleanup_kdfs(void) #ifdef __KDFS_PROCDIR_ remove_proc_entry("gen", proc_fs_kdfs); remove_proc_entry("inodes", proc_fs_kdfs); - remove_proc_entry("kdfs", proc_root_fs); + remove_proc_entry("fs/kdfs", NULL); #endif unregister_filesystem(&kdfs_fs_type); ----------------------------------------------------------------------- Summary of changes: fs/kdfs/super.c | 32 ++++++++++++++++++++------------ 1 files changed, 20 insertions(+), 12 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-18 17:26:07
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 5bd840461f5e33cf9ee0a83751daae473b1407c6 (commit) from 17301662a4431352d1e9a8baa5ef125322363f8a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 5bd840461f5e33cf9ee0a83751daae473b1407c6 Author: Marko Obrovac <mar...@in...> Date: Sun Oct 18 19:23:52 2009 +0200 [FIX] Conform the nameidata structure changes to the newest kernel structure diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index c6a7f47..0ae67a8 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -114,14 +114,14 @@ long create_phys_dir(const char *pathname, lockdep_on(); error = PTR_ERR(dentry); if (!IS_ERR(dentry)) { - error = vfs_mkdir(nd.dentry->d_inode, dentry, mode); + error = vfs_mkdir(nd.path.dentry->d_inode, dentry, mode); dput(dentry); } lockdep_off(); - mutex_unlock(&nd.dentry->d_inode->i_mutex); + mutex_unlock(&nd.path.dentry->d_inode->i_mutex); lockdep_on(); - path_release(&nd); + path_put(&nd.path); out: chroot_to_saved_root(&saved_path); @@ -208,7 +208,7 @@ out: struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_t gid) { int error = 0; - struct file *file; + struct file *file = NULL; struct path saved_path; const struct cred *old_creds; struct cred *overridden_creds; ----------------------------------------------------------------------- Summary of changes: fs/kdfs/physical_fs.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-18 17:05:45
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 17301662a4431352d1e9a8baa5ef125322363f8a (commit) from a1b5a937506912cc8e339d002ed54e8f3ec2cc34 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 17301662a4431352d1e9a8baa5ef125322363f8a Author: Marko Obrovac <mar...@in...> Date: Sun Oct 18 19:02:42 2009 +0200 [FIX] Change to newest kernel structure changes concerning credentials and file system structure changes (tickets #4, #5) diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index 6b91b91..c6a7f47 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -16,12 +16,53 @@ #include <asm/uaccess.h> #include <linux/namei.h> +#include <linux/fs_struct.h> #include "physical_fs.h" #include "debug_kdfs.h" #define KDFS_PART "KDFS - Native File System Accesses" + +void chroot_to_physical_root(struct path *saved_root) +{ + write_lock(¤t->fs->lock); + *saved_root = current->fs->root; + current->fs->root = init_task.fs->root; + write_unlock(¤t->fs->lock); +} + +void chroot_to_saved_root(const struct path *saved_root) +{ + struct path root; + + write_lock(¤t->fs->lock); + root = current->fs->root; + current->fs->root = *saved_root; + write_unlock(¤t->fs->lock); + path_put(&root); +} + +int change_creds(struct cred **overridden, const struct cred **old, + uid_t fsuid, gid_t fsgid) +{ + *overridden = prepare_creds(); + if (!*overridden) + return -ENOMEM; + + (*overridden)->fsuid = fsuid; + (*overridden)->fsgid = fsgid; + *old = override_creds(*overridden); + + return 0; +} + +void revert_old_creds(struct cred *overridden, const struct cred *old) +{ + revert_creds(old); + put_cred(overridden); +} + /* * Create a physical directory * @@ -43,23 +84,18 @@ long create_phys_dir(const char *pathname, int error = 0; struct dentry *dentry; struct nameidata nd; - struct dentry *saved_root; - struct vfsmount *saved_mnt; - uid_t saved_uid; - gid_t saved_gid; + struct path saved_path; + const struct cred *old_creds; + struct cred *overridden_creds; DEBUG(DBG_INFO, "Create dir %s\n", pathname); - saved_mnt = current->fs->rootmnt; - saved_root = current->fs->root; - saved_uid = current_fsuid(); - saved_gid = current_fsgid(); - - current->fs->rootmnt = init_task.fs->rootmnt; - current->fs->root = init_task.fs->root; - current->fsuid = uid; - current->fsgid = gid; - + error = change_creds(&overridden_creds, &old_creds, uid, gid); + if (error) + goto out; + + chroot_to_physical_root(&saved_path); + error = path_lookup(pathname, LOOKUP_PARENT, &nd); if (error) goto out; @@ -88,10 +124,8 @@ long create_phys_dir(const char *pathname, path_release(&nd); out: - current->fsuid = saved_uid; - current->fsgid = saved_gid; - current->fs->rootmnt = saved_mnt; - current->fs->root = saved_root; + chroot_to_saved_root(&saved_path); + revert_old_creds(overridden_creds, old_creds); return error; } @@ -111,26 +145,21 @@ out: long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) { struct file *file = NULL; - struct dentry *dentry; - struct inode *dir; + struct dentry *dentry; + struct inode *dir; long res = 0; - struct dentry *saved_root; - struct vfsmount *saved_mnt; - uid_t saved_uid; - gid_t saved_gid; + struct path saved_path; + const struct cred *old_creds; + struct cred *overridden_creds; DEBUG(DBG_TRACE, "Remove dir %s\n", pathname); - saved_mnt = current->fs->rootmnt; - saved_root = current->fs->root; - saved_uid = current_fsuid(); - saved_gid = current_fsgid(); - - current->fs->rootmnt = init_task.fs->rootmnt; - current->fs->root = init_task.fs->root; - current->fsuid = uid; - current->fsgid = gid; - + res = change_creds(&overridden_creds, &old_creds, uid, gid); + if (res) + goto out; + + chroot_to_physical_root(&saved_path); + file = filp_open(pathname, O_LARGEFILE|O_RDONLY, 0644); if (IS_ERR(file) && PTR_ERR(file) == -ENOENT) { DEBUG(DBG_INFO, "Can't access to phys_dir %s\n", pathname); @@ -155,10 +184,8 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) filp_close(file,current->files); out: - current->fsuid = saved_uid; - current->fsgid = saved_gid; - current->fs->rootmnt = saved_mnt; - current->fs->root = saved_root; + chroot_to_saved_root(&saved_path); + revert_old_creds(overridden_creds, old_creds); return res; } @@ -180,37 +207,35 @@ out: */ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_t gid) { - struct dentry *saved_root; - struct vfsmount *saved_mnt; - uid_t saved_uid; - gid_t saved_gid; + int error = 0; struct file *file; + struct path saved_path; + const struct cred *old_creds; + struct cred *overridden_creds; + + error = change_creds(&overridden_creds, &old_creds, uid, gid); + if (error) + goto out; + + chroot_to_physical_root(&saved_path); DEBUG(DBG_INFO, "Open physical file %s with flags 0x%08x - mode %o\n", filename, flags, mode); - saved_mnt = current->fs->rootmnt; - saved_root = current->fs->root; - saved_uid = current_fsuid(); - saved_gid = current_fsgid(); - - current->fs->rootmnt = init_task.fs->rootmnt; - current->fs->root = init_task.fs->root; - current->fsuid = uid; - current->fsgid = gid; - lockdep_off(); file = filp_open(filename, flags, mode); lockdep_on(); - current->fsuid = saved_uid; - current->fsgid = saved_gid; - current->fs->rootmnt = saved_mnt; - current->fs->root = saved_root; - DEBUG(DBG_INFO, "Open physical file %s done : %p\n", filename, file); +out: + chroot_to_saved_root(&saved_path); + revert_old_creds(overridden_creds, old_creds); + + if (error) + file = ERR_PTR(error); + return file; } @@ -386,22 +411,17 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) struct dentry *dentry; struct inode *dir; int res = 0; - struct dentry *saved_root; - struct vfsmount *saved_mnt; - uid_t saved_uid; - gid_t saved_gid; + struct path saved_path; + const struct cred *old_creds; + struct cred *overridden_creds; DEBUG(DBG_TRACE, "Remove file %s\n", filename); - saved_mnt = current->fs->rootmnt; - saved_root = current->fs->root; - saved_uid = current_fsuid(); - saved_gid = current_fsgid(); - - current->fs->rootmnt = init_task.fs->rootmnt; - current->fs->root = init_task.fs->root; - current->fsuid = uid; - current->fsgid = gid; + res = change_creds(&overridden_creds, &old_creds, uid, gid); + if (res) + goto out; + + chroot_to_physical_root(&saved_path); file = filp_open(filename, O_LARGEFILE|O_RDONLY, 0644); @@ -428,10 +448,8 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) DEBUG(DBG_INFO, "After vfs_unlink res = %d\n", res); out: - current->fsuid = saved_uid; - current->fsgid = saved_gid; - current->fs->rootmnt = saved_mnt; - current->fs->root = saved_root; + chroot_to_saved_root(&saved_path); + revert_old_creds(overridden_creds, old_creds); return res; } ----------------------------------------------------------------------- Summary of changes: fs/kdfs/physical_fs.c | 166 +++++++++++++++++++++++++++---------------------- 1 files changed, 92 insertions(+), 74 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-16 17:11:09
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via a1b5a937506912cc8e339d002ed54e8f3ec2cc34 (commit) from 29ceb8abebd6ea37670ecbf0f5fc19e280bdeb29 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a1b5a937506912cc8e339d002ed54e8f3ec2cc34 Author: Marko Obrovac <mar...@in...> Date: Fri Oct 16 17:05:38 2009 +0000 [MINOR] Fix part (the "read" part) of ticket #3 (nonexisting task_struct members) diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index 689f690..6b91b91 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -52,8 +52,8 @@ long create_phys_dir(const char *pathname, saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; - saved_uid = current->fsuid; - saved_gid = current->fsgid; + saved_uid = current_fsuid(); + saved_gid = current_fsgid(); current->fs->rootmnt = init_task.fs->rootmnt; current->fs->root = init_task.fs->root; @@ -123,8 +123,8 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; - saved_uid = current->fsuid; - saved_gid = current->fsgid; + saved_uid = current_fsuid(); + saved_gid = current_fsgid(); current->fs->rootmnt = init_task.fs->rootmnt; current->fs->root = init_task.fs->root; @@ -192,8 +192,8 @@ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_ saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; - saved_uid = current->fsuid; - saved_gid = current->fsgid; + saved_uid = current_fsuid(); + saved_gid = current_fsgid(); current->fs->rootmnt = init_task.fs->rootmnt; current->fs->root = init_task.fs->root; @@ -395,8 +395,8 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; - saved_uid = current->fsuid; - saved_gid = current->fsgid; + saved_uid = current_fsuid(); + saved_gid = current_fsgid(); current->fs->rootmnt = init_task.fs->rootmnt; current->fs->root = init_task.fs->root; ----------------------------------------------------------------------- Summary of changes: fs/kdfs/physical_fs.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-16 16:26:37
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 29ceb8abebd6ea37670ecbf0f5fc19e280bdeb29 (commit) from 04a5f0a443f52df5a415ddbbd8cc33bdbed37c5c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 29ceb8abebd6ea37670ecbf0f5fc19e280bdeb29 Author: Marko Obrovac <mar...@in...> Date: Fri Oct 16 16:22:38 2009 +0000 [FIX] Introduce linux/namei.h (struct nameidata) Closed ticket #2 diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index 36273ca..689f690 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -15,6 +15,7 @@ #endif #include <asm/uaccess.h> +#include <linux/namei.h> #include "physical_fs.h" ----------------------------------------------------------------------- Summary of changes: fs/kdfs/physical_fs.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-16 15:49:22
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 04a5f0a443f52df5a415ddbbd8cc33bdbed37c5c (commit) from 5d0d61a6740ae2bed50dc9843d5e68ea36b004e5 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 04a5f0a443f52df5a415ddbbd8cc33bdbed37c5c Author: Marko Obrovac <mar...@in...> Date: Fri Oct 16 15:45:34 2009 +0000 [FIX] Conform the debugging to new kerrighed/kernel guidelines diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index 59a5b9d..65ae72f 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -77,13 +77,13 @@ int kdfs_readpage(struct file *file, struct page *page) ASSERT(page != NULL); k_inode=kdfs_ilocalfind(page->mapping->host->i_ino); if (k_inode->content_setid == KDDM_SET_UNUSED) - DEBUG (DBG_KDFS_ADDRSPACE, DBG_PANIC, "No contentset associated.... looks really strange (inode %lu, name %s)\n", + DEBUG (DBG_PANIC, "No contentset associated.... looks really strange (inode %lu, name %s)\n", k_inode->inode->i_ino, list_entry(k_inode->inode->i_dentry.next, struct dentry, d_alias)->d_name.name); /* TODO PRIORITY 2: test kdfs_get_page returned value */ k_page = kdfs_get_page(k_inode->content_setid, page->index); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, " Readpage k_page->page : %p and page %p\n", k_page->page, page); + DEBUG(DBG_INFO, " Readpage k_page->page : %p and page %p\n", k_page->page, page); BUG_ON(k_page->page != page); SetPageUptodate(k_page->page); @@ -109,7 +109,7 @@ int kdfs_prepare_write (struct file *file, struct kdfs_page *k_page = NULL; struct kdfs_inode *k_inode = NULL; - DEBUG (DBG_KDFS_ADDRSPACE, DBG_INFO, "Prepare_write for file %s (ino %ld), page %ld from %d to %d (count = %d, mapping = %p)\n", + DEBUG (DBG_INFO, "Prepare_write for file %s (ino %ld), page %ld from %d to %d (count = %d, mapping = %p)\n", file->f_dentry->d_name.name, file->f_dentry->d_inode->i_ino, page->index, offset, _to, page_count(page), page->mapping); BUG_ON (page->mapping == NULL); @@ -117,7 +117,7 @@ int kdfs_prepare_write (struct file *file, k_inode=kdfs_ilocalfind(file->f_dentry->d_inode->i_ino); if(k_inode->content_setid == KDDM_SET_UNUSED){ - DEBUG (DBG_KDFS_ADDRSPACE, DBG_PANIC, "No contentset associated.... looks really strange \n"); + DEBUG (DBG_PANIC, "No contentset associated.... looks really strange \n"); } /* TODO PRIORITY 2: test kdfs_get_page returned value */ @@ -141,7 +141,7 @@ int kdfs_commit_write(struct file *file, { struct kdfs_inode *k_inode = NULL; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "commit_write for page %ld for file %s" + DEBUG(DBG_INFO, "commit_write for page %ld for file %s" "(ino %lu) (from %u to %u) (count = %d)\n", page->index, file->f_dentry->d_name.name, file->f_dentry->d_inode->i_ino, offset, _to, @@ -149,7 +149,7 @@ int kdfs_commit_write(struct file *file, k_inode = kdfs_ilocalfind(file->f_dentry->d_inode->i_ino); if (k_inode->content_setid == KDDM_SET_UNUSED) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_PANIC, "No contentset associated.... looks really strange \n"); + DEBUG(DBG_PANIC, "No contentset associated.... looks really strange \n"); if (((loff_t)page->index * PAGE_SIZE) + _to > k_inode->inode->i_size) i_size_write(k_inode->inode, ((loff_t)page->index * PAGE_SIZE) + _to); @@ -257,19 +257,19 @@ struct address_space_operations kdfs_aops = { struct kdfs_page *kdfs_get_page(kddm_set_id_t set_id, objid_t obj_id) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Get page %ld from set %ld\n", obj_id, set_id); + DEBUG(DBG_INFO, "Get page %ld from set %ld\n", obj_id, set_id); return kddm_get_object(kddm_def_ns, set_id, obj_id); } struct kdfs_page *kdfs_grab_page(kddm_set_id_t set_id, objid_t obj_id) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Grab page %ld from set %ld\n", obj_id, set_id); + DEBUG(DBG_INFO, "Grab page %ld from set %ld\n", obj_id, set_id); return kddm_grab_object(kddm_def_ns, set_id, obj_id); } struct kdfs_page *kdfs_findlocal_page(kddm_set_id_t set_id, objid_t obj_id) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Grab page %ld from set %ld\n", obj_id, set_id); + DEBUG(DBG_INFO, "Grab page %ld from set %ld\n", obj_id, set_id); return kddm_find_object(kddm_def_ns, set_id, obj_id); } @@ -280,13 +280,13 @@ void __kdfs_put_page(kddm_set_id_t set_id, objid_t obj_id) void _kdfs_put_page(struct kdfs_page *k_page) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Put page %ld from set %ld\n", k_page->obj_id, k_page->set_id); + DEBUG(DBG_INFO, "Put page %ld from set %ld\n", k_page->obj_id, k_page->set_id); kddm_put_object(kddm_def_ns, k_page->set_id, k_page->obj_id); } void kdfs_mark_page_dirty(kddm_set_id_t set_id, objid_t obj_id) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Sync page %ld from set %lu\n", obj_id, set_id); + DEBUG(DBG_INFO, "Sync page %ld from set %lu\n", obj_id, set_id); kddm_sync_frozen_object(kddm_def_ns, set_id, obj_id); } @@ -328,7 +328,7 @@ kddm_set_t *__create_content_kddm_set(kddm_set_id_t set_id, content_data, sizeof(struct content_iolinker_data), KDDM_FT_LINKED); if (IS_ERR(kddm_set)) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_PANIC, "Can't create content kddm_set for inode %ld\n", k_inode->inode->i_ino); + DEBUG(DBG_PANIC, "Can't create content kddm_set for inode %ld\n", k_inode->inode->i_ino); /* We can free all the memory allocated */ kfree(content_data); @@ -372,7 +372,7 @@ int __local_destroy_content_kddm_set(struct kdfs_inode *k_inode) kddm_set = _local_get_kddm_set(kddm_def_ns, k_inode->content_setid); if (!kddm_set) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "The associated kddm_set for inode %ld hasn't been instantiated\n", k_inode->inode->i_ino); + DEBUG(DBG_INFO, "The associated kddm_set for inode %ld hasn't been instantiated\n", k_inode->inode->i_ino); else{ /* * TODO PRIORITY 1, Adrien / (Renaud kDDM stuff) @@ -426,10 +426,10 @@ int kdfs_iol_page_alloc(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) k_page = kmalloc(sizeof(struct kdfs_page), GFP_KERNEL); ASSERT(k_page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Before Alloc new page %ld from set %lu \n", objid, set->id); + DEBUG(DBG_INFO, "Before Alloc new page %ld from set %lu \n", objid, set->id); k_page->page = find_get_page(k_mapping, objid); if (!k_page->page) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, + DEBUG(DBG_ALERT, "Can't find page for file/directory = %ld and page id = %ld, So created and locked\n", k_mapping->host->i_ino, objid); k_page->page = find_or_create_page(k_mapping, objid, mapping_gfp_mask(k_mapping) & ~__GFP_FS); @@ -437,7 +437,7 @@ int kdfs_iol_page_alloc(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) } else k_page->flags = K_PG_ok; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "After Alloc new page %ld from set %lu (page addr=%p count=%d)\n", objid, set->id, k_page->page, page_count(k_page->page)); + DEBUG(DBG_INFO, "After Alloc new page %ld from set %lu (page addr=%p count=%d)\n", objid, set->id, k_page->page, page_count(k_page->page)); k_page->set_id = set->id; k_page->obj_id = objid; @@ -476,13 +476,13 @@ int kdfs_iol_page_first_touch(kddm_obj_t *objEntry, iolinker_data = (struct content_iolinker_data *) set->private_data; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_TRACE, "file/directory = %ld, pageid = %ld gonna to retrieve inode \n", iolinker_data->ino, objid); + DEBUG(DBG_TRACE, "file/directory = %ld, pageid = %ld gonna to retrieve inode \n", iolinker_data->ino, objid); /* WARNING: quite ugly, we should not access to a local inode without locking the corresponding kddm object*/ k_mapping = ((struct content_iolinker_data *) set->private_data)->k_mapping; ASSERT(k_mapping); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_TRACE, "file/directory = %ld, pageid = %ld mapping = %p\n", iolinker_data->ino, objid, k_mapping); + DEBUG(DBG_TRACE, "file/directory = %ld, pageid = %ld mapping = %p\n", iolinker_data->ino, objid, k_mapping); /* Allocate kdfs_page and retrieve page address */ k_page = kmalloc(sizeof(struct kdfs_page), GFP_KERNEL); @@ -500,13 +500,13 @@ int kdfs_iol_page_first_touch(kddm_obj_t *objEntry, k_page->page = find_get_page(k_mapping, objid); if (!k_page->page) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Can't find page for file/directory = %ld and page id = %ld, So created and locked\n", iolinker_data->ino, objid); + DEBUG(DBG_ALERT, "Can't find page for file/directory = %ld and page id = %ld, So created and locked\n", iolinker_data->ino, objid); k_page->page = find_or_create_page(k_mapping, objid, (mapping_gfp_mask(k_mapping)|__GFP_ZERO) & ~__GFP_FS); k_page->flags = K_PG_locked; } else k_page->flags = K_PG_ok; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "After find Page count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "After find Page count=%d\n", page_count(k_page->page)); page_addr = (char *) kmap(k_page->page); pos = (loff_t)objid * PAGE_SIZE; @@ -516,14 +516,14 @@ int kdfs_iol_page_first_touch(kddm_obj_t *objEntry, kunmap(k_page->page); if (!IS_ERR(k_page->page)) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Can't read page for file/directory = %ld and page id = %ld\n", iolinker_data->ino, objid); + DEBUG(DBG_ALERT, "Can't read page for file/directory = %ld and page id = %ld\n", iolinker_data->ino, objid); objEntry->object = (void *) k_page; /* TODO PRIORITY 2: should release in kdfs_put_page instead? */ //page_cache_release(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "After read Page count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "After read Page count=%d\n", page_count(k_page->page)); PRINT_FUNCTION_EXIT; return res; @@ -543,7 +543,7 @@ int kdfs_iol_page_insert(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) PRINT_FUNCTION_NAME; k_page = (struct kdfs_page *) objEntry->object; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Entering page count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Entering page count=%d\n", page_count(k_page->page)); /* * Set the private field of the page to get callback when it is @@ -562,7 +562,7 @@ int kdfs_iol_page_insert(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) } page_cache_release(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Exiting page count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Exiting page count=%d\n", page_count(k_page->page)); PRINT_FUNCTION_EXIT; return 0; } @@ -587,7 +587,7 @@ int kdfs_iol_page_export (struct rpc_desc *desc, res = rpc_pack(desc, 0, page_addr, PAGE_SIZE); if (res < 0) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "can't pack export page (res=%d)\n", res); + DEBUG(DBG_ALERT, "can't pack export page (res=%d)\n", res); kunmap_atomic(page_addr, KM_USER0); @@ -613,12 +613,12 @@ int kdfs_iol_page_invalidate(kddm_obj_t *objEntry, kddm_set_t *set, objid_t obji PRINT_FUNCTION_NAME; SetPageLocked(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); remove_from_page_cache(k_page->page); ClearPagePrivate(k_page->page); unlock_page(k_page->page); page_cache_release(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page after count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page after count=%d\n", page_count(k_page->page)); /* * TODO PRIORITY 2: Adrien * Page Count should be probably decremented @@ -675,7 +675,7 @@ int kdfs_iol_page_sync(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) ASSERT(k_page != NULL); ASSERT(k_page->page != NULL); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Try to sync page %ld (page addr %p) of set %lu\n", objid, k_page->page, set->id); + DEBUG(DBG_INFO, "Try to sync page %ld (page addr %p) of set %lu\n", objid, k_page->page, set->id); file_pos = ((loff_t)objid * PAGE_SIZE) + k_page->offset; page_addr = (char *) kmap(k_page->page); @@ -707,7 +707,7 @@ int kdfs_iol_page_put(kddm_obj_t *objEntry, kddm_set_t *set, objid_t objid) ASSERT(objEntry != NULL); k_page = (struct kdfs_page *)objEntry->object; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page count = %d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page count = %d\n", page_count(k_page->page)); //page_cache_release(k_page->page); @@ -735,12 +735,12 @@ int kdfs_iol_page_remove(void *object, struct kddm_set *set, objid_t objid) * we are not called by the VFS */ SetPageLocked(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page count before =%d\n", page_count(k_page->page)); remove_from_page_cache(k_page->page); ClearPagePrivate(k_page->page); unlock_page(k_page->page); page_cache_release(k_page->page); - DEBUG(DBG_KDFS_ADDRSPACE, DBG_ALERT, "Page after count=%d\n", page_count(k_page->page)); + DEBUG(DBG_ALERT, "Page after count=%d\n", page_count(k_page->page)); } PRINT_FUNCTION_EXIT; @@ -776,7 +776,7 @@ int content_instantiate(kddm_set_t *kddm_set, void *private_data, int master) ASSERT(kddm_set->private_data != NULL); content_data = (struct content_iolinker_data *) kddm_set->private_data; - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "Instantiate kddm %ld with ino : %ld\n", kddm_set->id, content_data->ino); + DEBUG(DBG_INFO, "Instantiate kddm %ld with ino : %ld\n", kddm_set->id, content_data->ino); if (kddm_set->def_owner == kerrighed_node_id) { content_data->phys_dirname = kmalloc(PATH_MAX, GFP_KERNEL); @@ -811,7 +811,7 @@ int content_instantiate(kddm_set_t *kddm_set, void *private_data, int master) content_data->current_meta = NULL; } } else { - DEBUG (DBG_KDFS_ADDRSPACE, DBG_INFO, "Nothing TODO, file is not on this node\n"); + DEBUG (DBG_INFO, "Nothing TODO, file is not on this node\n"); content_data->phys_dirname = NULL; content_data->phys_file = NULL; } @@ -820,16 +820,16 @@ int content_instantiate(kddm_set_t *kddm_set, void *private_data, int master) /* Retrieve the local ref to the k_mapping object */ inode = ilookup(k_sb->sb, content_data->ino); if (inode) { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "K_mapping from the cache\n"); + DEBUG(DBG_INFO, "K_mapping from the cache\n"); content_data->k_mapping = inode->i_mapping; iput(inode); } else { - DEBUG(DBG_KDFS_ADDRSPACE, DBG_INFO, "K_mapping will be retrieve from iget\n"); + DEBUG(DBG_INFO, "K_mapping will be retrieve from iget\n"); inode = iget(k_sb->sb, content_data->ino); content_data->k_mapping = inode->i_mapping; } if (!content_data->k_mapping) - DEBUG(DBG_KDFS_ADDRSPACE, DBG_PANIC, "k_mapping was not cleanly initialized\n"); + DEBUG(DBG_PANIC, "k_mapping was not cleanly initialized\n"); __kdfs_putsb(k_sb); PRINT_FUNCTION_EXIT; diff --git a/fs/kdfs/debug_kdfs.h b/fs/kdfs/debug_kdfs.h index 15df5b1..51bf3b0 100644 --- a/fs/kdfs/debug_kdfs.h +++ b/fs/kdfs/debug_kdfs.h @@ -16,6 +16,7 @@ /* Common headers */ #include <asm-generic/bug.h> #include <linux/err.h> +#include <linux/kernel.h> /* Kerrighed headers (dynamical debugging) */ #include <kerrighed/debug.h> @@ -25,54 +26,24 @@ #define DBG_PANIC 0 #define DBG_ALERT 1 #define DBG_WARNING 2 -#define DBG_TRACE 3 +#define DBG_TRACE 3 #define DBG_INFO 4 -/* DEBUG type */ -#define DBG_KDFS_GENERAL "general" /* General debug */ -#define DBG_KDFS_SUPERBLK "superblock" /* Super Block */ -#define DBG_KDFS_INODE "inode" /* Inode Management */ -#define DBG_KDFS_DIR "dir-mgmt" /* Dir management */ -#define DBG_KDFS_FILE "file-mgmt" /* File management */ -#define DBG_KDFS_ADDRSPACE "addrspace" /* Page management */ -#define DBG_KDFS_NATIVEFS "native-fs" /* Native File System Accesses */ - -static inline struct dentry * init_kdfs_debug(void) -{ -#ifdef NDEBUG - return NULL; -#else - /* The default level is set by the second parameter */ - struct dentry *d = debug_define("kDFS", DBG_PANIC); - - DEBUG_MASK("kDFS", DBG_KDFS_GENERAL); - DEBUG_MASK("kDFS", DBG_KDFS_SUPERBLK); - DEBUG_MASK("kDFS", DBG_KDFS_INODE); - DEBUG_MASK("kDFS", DBG_KDFS_DIR); - DEBUG_MASK("kDFS", DBG_KDFS_FILE); - DEBUG_MASK("kDFS", DBG_KDFS_ADDRSPACE); - DEBUG_MASK("kDFS", DBG_KDFS_NATIVEFS); - - return d; -#endif -} - - -//#define KDFS_DEBUG_LEVEL 4 +#define KDFS_DEBUG_LEVEL 4 #ifdef DEBUG #undef DEBUG #endif #ifdef NDEBUG -# define DEBUG(type, level, format, args...) do {} while(0) +# define DEBUG(level, format, args...) do {} while(0) #else -# define DEBUG(type, level, format, args...) \ +# define DEBUG(level, format, args...) \ do { \ - if (match_debug("kDFS", type, level)) { \ - printk ("%s - (%s) - %d : ", KDFS_PART, __PRETTY_FUNCTION__, \ + if (KDFS_DEBUG_LEVEL <= level || level == DBG_PANIC) { \ + pr_debug("%s - (%s) - %d : ", KDFS_PART, __PRETTY_FUNCTION__, \ current->pid) ; \ - printk (format, ## args) ; \ + pr_debug(format, ## args) ; \ } \ if(level == DBG_PANIC)\ BUG();\ @@ -85,8 +56,8 @@ do { \ /* FUNCTION NAME : ENTER and EXIT */ // TODO: redefine the following macros to take into account debug level ! -#define PRINT_FUNCTION_NAME DEBUG(DBG_KDFS_GENERAL, DBG_TRACE, "%s\n", __PRETTY_FUNCTION__) -#define PRINT_FUNCTION_EXIT DEBUG(DBG_KDFS_GENERAL, DBG_TRACE, "%s exited\n", __PRETTY_FUNCTION__) +#define PRINT_FUNCTION_NAME DEBUG(DBG_TRACE, "%s\n", __PRETTY_FUNCTION__) +#define PRINT_FUNCTION_EXIT DEBUG(DBG_TRACE, "%s exited\n", __PRETTY_FUNCTION__) /* ASSERT and BUG ON */ @@ -101,7 +72,7 @@ do { \ #define ASSERT(expr) \ do {\ if ( !(expr) ) {\ - printk ("PANIC : ASSERT " #expr " failed in %s \ + pr_debug("PANIC : ASSERT " #expr " failed in %s \ line %d\n", __PRETTY_FUNCTION__, __LINE__ ); \ BUG(); \ } \ diff --git a/fs/kdfs/dir.c b/fs/kdfs/dir.c index 1679156..644d248 100644 --- a/fs/kdfs/dir.c +++ b/fs/kdfs/dir.c @@ -59,7 +59,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file struct page *tmp_page = NULL; void *page_addr = NULL ; - DEBUG (DBG_KDFS_DIR, DBG_INFO, + DEBUG (DBG_INFO, "Look up for entry %s in directory %ld\n", filename, dir->inode->i_ino); @@ -75,11 +75,11 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file } /* Parse directory dentries */ - DEBUG (DBG_KDFS_DIR, DBG_INFO, "Start to look inside directory\n"); + DEBUG (DBG_INFO, "Start to look inside directory\n"); do { *k_page = kdfs_grab_page(dir->content_setid, pageid); if (IS_ERR(*k_page)) - DEBUG (DBG_KDFS_DIR, DBG_PANIC, + DEBUG (DBG_PANIC, "Can't grab page %ld for the directory %ld", pageid, dir->content_setid); @@ -89,7 +89,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file /* For each entry contained in the page */ do { - DEBUG (DBG_KDFS_DIR, DBG_INFO, + DEBUG (DBG_INFO, "Grab page %ld:" "page addr %p, dentry_addr %p (file size %lld)\n", pageid, page_addr, dentry_addr, @@ -98,7 +98,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file dir_entry = (struct kdfs_dir_entry *) dentry_addr; /* Did we find the right entry */ - DEBUG (DBG_KDFS_DIR, DBG_INFO, "filelen %d dirfilelen %d, filename %s dirname %s, dirlen %d (dirino %ld)\n", + DEBUG (DBG_INFO, "filelen %d dirfilelen %d, filename %s dirname %s, dirlen %d (dirino %ld)\n", filename_len, dir_entry->name_len, filename, dir_entry->name,dir_entry->rec_len, dir_entry->ino); if (dir_entry->name_len == filename_len && strncmp (dir_entry->name, filename, filename_len) == 0) @@ -122,7 +122,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file } // end if there are some entries - DEBUG (DBG_KDFS_DIR, DBG_INFO, "Look up for file %s in directory %ld : notfound \n", + DEBUG (DBG_INFO, "Look up for file %s in directory %ld : notfound \n", filename, dir->inode->i_ino); // TODO PRIORITY 1: put_kddm_set required a reference on the set. // I have to add a reference inside kdfs_page structure :( @@ -130,7 +130,7 @@ struct kdfs_dir_entry *kdfs_grab_entry (struct kdfs_inode *dir, const char *file return NULL; found: - DEBUG (DBG_KDFS_DIR, DBG_INFO, + DEBUG (DBG_INFO, "Look up for file %s in directory %ld: found : %p\n", filename, dir->inode->i_ino, dir_entry); return dir_entry; @@ -162,7 +162,7 @@ struct kdfs_dir_entry *kdfs_find_entry(struct kdfs_inode *dir, struct page *tmp_page = NULL; void *page_addr = NULL; - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "Look up for entry %s in directory %ld\n", filename, dir->inode->i_ino); @@ -178,12 +178,12 @@ struct kdfs_dir_entry *kdfs_find_entry(struct kdfs_inode *dir, } /* Parse directory dentries */ - DEBUG (DBG_KDFS_DIR, DBG_INFO, + DEBUG (DBG_INFO, "Start to look inside directory \n"); do { *k_page = kdfs_get_page(dir->content_setid, pageid); if (IS_ERR(*k_page)) - DEBUG(DBG_KDFS_DIR, DBG_PANIC, + DEBUG(DBG_PANIC, "Can't get page %ld for the directory %ld\n", pageid, dir->content_setid); @@ -193,14 +193,14 @@ struct kdfs_dir_entry *kdfs_find_entry(struct kdfs_inode *dir, /* For each entry contained in the page */ do { - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "page addr %p, dentry_addr %p (file size %lld)\n", page_addr, dentry_addr, dir->inode->i_size); /* Get the directory entry */ dir_entry = (struct kdfs_dir_entry *) dentry_addr; /* Did we find the right entry */ - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "filelen %d dirfilelen %d, filename %s dirname %s, dirlen %d (dirino %ld)\n", filename_len, dir_entry->name_len, filename, dir_entry->name,dir_entry->rec_len, dir_entry->ino); if (dir_entry->name_len == filename_len && @@ -225,7 +225,7 @@ struct kdfs_dir_entry *kdfs_find_entry(struct kdfs_inode *dir, } // end if there are some entries - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "Look up for file %s in directory %ld : notfound\n", filename, dir->inode->i_ino); // TODO PRIORITY 1: put_kddm_set required a reference on the set. @@ -234,7 +234,7 @@ struct kdfs_dir_entry *kdfs_find_entry(struct kdfs_inode *dir, return NULL; found: - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "Look up for file %s in directory %ld: found : %p\n", filename, dir->inode->i_ino, dir_entry); return dir_entry; @@ -269,7 +269,7 @@ ino_t kdfs_inode_by_name(struct kdfs_inode *dir, struct dentry *dentry) dir_entry = kdfs_find_entry(dir, dentry->d_name.name, &k_page); if (dir_entry) { res = le32_to_cpu(dir_entry->ino); - DEBUG(DBG_KDFS_DIR, DBG_INFO, "ino : %ld \n", res); + DEBUG(DBG_INFO, "ino : %ld \n", res); _kdfs_put_page(k_page); // TODO PRIORITY 1: put_kddm_set required a reference on the set. // I have to add a reference inside kdfs_page structure :( @@ -374,7 +374,7 @@ int kdfs_add_dir_entry(struct kdfs_inode *kdfs_pdir, char *filename, ino_t ino, ASSERT(kdfs_pdir != NULL); - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "Adding file %s to directory (inode %ld) with mode %o\n", filename, kdfs_pdir->inode->i_ino, mode); @@ -404,7 +404,7 @@ int kdfs_add_dir_entry(struct kdfs_inode *kdfs_pdir, char *filename, ino_t ino, kdfs_page = kdfs_grab_page(kdfs_pdir->content_setid, pageid); ASSERT(kdfs_page != NULL); - DEBUG(DBG_KDFS_DIR, DBG_INFO, "Page Grabbed, gonna add an entry at pageid %ld offset %ld\n", pageid, offset); + DEBUG(DBG_INFO, "Page Grabbed, gonna add an entry at pageid %ld offset %ld\n", pageid, offset); /* Fill the new directory entry */ page_addr = kmap (kdfs_page->page); @@ -418,7 +418,7 @@ int kdfs_add_dir_entry(struct kdfs_inode *kdfs_pdir, char *filename, ino_t ino, dir_entry->rec_len = __cpu_to_le16(KDFS_DIRENT_SIZE); - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "Size of direntry %d size of filename %d inode %ld\n", dir_entry->rec_len, dir_entry->name_len, dir_entry->ino); @@ -446,7 +446,7 @@ int kdfs_add_dir_entry(struct kdfs_inode *kdfs_pdir, char *filename, ino_t ino, // kdfs_iput(kdfs_pdir->inode->i_ino); - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "Adding file %s (with ino %ld) to directory (inode %ld): done\n", filename, dir_entry->ino, kdfs_pdir->inode->i_ino); @@ -486,7 +486,7 @@ int kdfs_del_dir_entry(struct kdfs_inode *kdfs_pdir, char *filename, ino_t ino) /* We found the direntry, let's remove it! */ res = le32_to_cpu(dir_entry->ino); - DEBUG(DBG_KDFS_DIR, DBG_INFO, "found direntry : ino = %ld \n", res); + DEBUG(DBG_INFO, "found direntry : ino = %ld \n", res); page_addr = page_address(k_page->page); /* TODO PRIORITY 1: Should we grab parent dir inode */ @@ -541,7 +541,7 @@ int kdfs_del_dir_entry(struct kdfs_inode *kdfs_pdir, char *filename, ino_t ino) } } - DEBUG(DBG_KDFS_DIR, DBG_INFO, "new file size : %lld\n", kdfs_pdir->inode->i_size); + DEBUG(DBG_INFO, "new file size : %lld\n", kdfs_pdir->inode->i_size); /* Update timestamps */ kdfs_pdir->inode->i_mtime = kdfs_pdir->inode->i_ctime = CURRENT_TIME_SEC; @@ -595,7 +595,7 @@ int kdfs_make_empty(struct kdfs_inode *k_pdir, struct kdfs_inode *k_dir) */ int kdfs_dir_empty(struct kdfs_inode *k_dir) { - DEBUG(DBG_KDFS_DIR, DBG_INFO, "Directory size: %llu empty if: %d\n", k_dir->inode->i_size, KDFS_DIRENT_SIZE * 2); + DEBUG(DBG_INFO, "Directory size: %llu empty if: %d\n", k_dir->inode->i_size, KDFS_DIRENT_SIZE * 2); if (k_dir->inode->i_size > KDFS_DIRENT_SIZE * 2) return 0; return 1; @@ -642,7 +642,7 @@ int kdfs_readdir(struct file *filp, void *dirent, filldir_t filldir) void *dentry_addr = NULL; int res = 0; - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "readdir %s: file offset = %d, file size = %lld, (inode %ld)\n", filp->f_dentry->d_name.name, (int) filp->f_pos, filp->f_dentry->d_inode->i_size, filp->f_dentry->d_inode->i_ino); @@ -654,7 +654,7 @@ int kdfs_readdir(struct file *filp, void *dirent, filldir_t filldir) if (k_inode->inode->i_size != 0) { if (filp->f_pos >= k_inode->inode->i_size) { - DEBUG(DBG_KDFS_DIR, DBG_INFO, "readdir file offset is greather than file size. Nothing TODO return\n"); + DEBUG(DBG_INFO, "readdir file offset is greather than file size. Nothing TODO return\n"); goto out; } @@ -668,12 +668,12 @@ int kdfs_readdir(struct file *filp, void *dirent, filldir_t filldir) // nsid=0=SYS_KDDM__NS_ID cf. ./ctnr/name_space.h // dir_set = find_get_kddm_set(KDDM_DEF_NS_ID, k_inode->content_setid); - DEBUG (DBG_KDFS_DIR, DBG_INFO, + DEBUG (DBG_INFO, "kDFS: readdir %s: offset = %d - dir size %d\n", filp->f_dentry->d_name.name, (int) filp->f_pos, (int) k_inode->inode->i_size); /* Parse directory dentries */ - DEBUG(DBG_KDFS_DIR, DBG_INFO, "Start to look inside directory\n"); + DEBUG(DBG_INFO, "Start to look inside directory\n"); pageid = filp->f_pos / PAGE_SIZE; pageoffset = filp->f_pos - (pageid * PAGE_SIZE); npages = (k_inode->inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; @@ -681,7 +681,7 @@ int kdfs_readdir(struct file *filp, void *dirent, filldir_t filldir) k_page = kdfs_get_page(k_inode->content_setid, pageid); if (IS_ERR(k_page)) - DEBUG(DBG_KDFS_DIR, DBG_PANIC, + DEBUG(DBG_PANIC, "Can't get page %ld for the directory %ld\n", pageid, k_inode->content_setid); @@ -693,7 +693,7 @@ int kdfs_readdir(struct file *filp, void *dirent, filldir_t filldir) do { /* Get the directory entry */ dir_entry = (struct kdfs_dir_entry *) dentry_addr; - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "dentry_addr %p (dir_len %d, dirname %s, namelen %d, file size %lld, file pos %lld PAGESIZE=%ld pageoffset=%u)\n", dentry_addr,dir_entry->rec_len, dir_entry->name, dir_entry->name_len, k_inode->inode->i_size, filp->f_pos, PAGE_SIZE, pageoffset); @@ -702,7 +702,7 @@ int kdfs_readdir(struct file *filp, void *dirent, filldir_t filldir) filp->f_pos, dir_entry->ino, kdfs_dt_type(dir_entry->mode)); if (res < 0) { /* filldir is over (cf. ext2_readdir), so a new dirent should be allocated by the kernel */ - DEBUG(DBG_KDFS_DIR, DBG_ALERT, "Can't fill dirent or dirent is full (res=%d)\n",res); + DEBUG(DBG_ALERT, "Can't fill dirent or dirent is full (res=%d)\n",res); /* Get the directory entry */ kunmap(tmp_page); _kdfs_put_page(k_page); @@ -730,7 +730,7 @@ int kdfs_readdir(struct file *filp, void *dirent, filldir_t filldir) while (pageid < npages); } else - DEBUG(DBG_KDFS_DIR, DBG_INFO, + DEBUG(DBG_INFO, "kDFS : readdir %s: file is zero length (file size = %lld, inode %ld)\n", filp->f_dentry->d_name.name, filp->f_dentry->d_inode->i_size, filp->f_dentry->d_inode->i_ino); @@ -776,11 +776,11 @@ kddm_set_t *create_dir_kddm_set(struct kdfs_inode *dir) kddm_set = __create_content_kddm_set(0, inode_linked_node(dir->inode->i_ino), dir, DIR_LINKER); if (!IS_ERR(kddm_set)) { dir->content_setid = kddm_set->id; - DEBUG(DBG_KDFS_DIR, DBG_TRACE, + DEBUG(DBG_TRACE, "Create content kddm_set for directory %ld with id %ld\n", dir->inode->i_ino, dir->content_setid); } else - DEBUG(DBG_KDFS_DIR, DBG_PANIC, + DEBUG(DBG_PANIC, "Can't create content kddm_set for directory %ld\n", dir->inode->i_ino); diff --git a/fs/kdfs/file.c b/fs/kdfs/file.c index 91e370c..ea9898e 100644 --- a/fs/kdfs/file.c +++ b/fs/kdfs/file.c @@ -39,13 +39,13 @@ loff_t kdfs_llseek(struct file *filp, loff_t offset, int origin) { loff_t r; - DEBUG(DBG_KDFS_FILE, DBG_INFO, + DEBUG(DBG_INFO, "lseek on file %s at offset %lld current offset is %lld\n", filp->f_dentry->d_name.name, offset, filp->f_pos); r = generic_file_llseek(filp, offset, origin); - DEBUG(DBG_KDFS_FILE, DBG_INFO, + DEBUG(DBG_INFO, "lseek on file %s offset is now %lld: done with err %lld\n", filp->f_dentry->d_name.name, filp->f_pos, r); @@ -58,7 +58,7 @@ ssize_t kdfs_read(struct file *filp, char *buf, size_t count, loff_t *ppos) ssize_t r = 0; struct kdfs_inode *kdfs_inode = NULL; - DEBUG(DBG_KDFS_FILE, DBG_INFO, + DEBUG(DBG_INFO, "read %zd bytes from file %s at offset %lld in buffer %p\n", count, filp->f_dentry->d_name.name, *ppos, buf); @@ -74,7 +74,7 @@ ssize_t kdfs_read(struct file *filp, char *buf, size_t count, loff_t *ppos) kdfs_iput(filp->f_dentry->d_inode->i_ino); - DEBUG(DBG_KDFS_FILE, DBG_INFO, "read of file %s at offset %lld: done\n", + DEBUG(DBG_INFO, "read of file %s at offset %lld: done\n", filp->f_dentry->d_name.name, *ppos); return r; @@ -85,7 +85,7 @@ ssize_t kdfs_write(struct file *filp, const char *buf, size_t count, loff_t *ppo ssize_t r = 0; struct kdfs_inode *kdfs_inode = NULL; - DEBUG(DBG_KDFS_FILE, DBG_INFO, + DEBUG(DBG_INFO, "write %zd bytes to file %s at offset %lld\n", count, filp->f_dentry->d_name.name, *ppos); @@ -100,7 +100,7 @@ ssize_t kdfs_write(struct file *filp, const char *buf, size_t count, loff_t *ppo kdfs_iput(filp->f_dentry->d_inode->i_ino); - DEBUG(DBG_KDFS_FILE, DBG_INFO, + DEBUG(DBG_INFO, "write to file %s at offset %lld: " "done with return value %zd\n", filp->f_dentry->d_name.name, *ppos, r); @@ -113,7 +113,7 @@ int kdfs_mmap(struct file *filp, struct vm_area_struct *vm) int ret = 0; struct kdfs_inode *k_inode = NULL; - DEBUG(DBG_KDFS_FILE, DBG_INFO, "mmap file %s \n", filp->f_dentry->d_name.name); + DEBUG(DBG_INFO, "mmap file %s \n", filp->f_dentry->d_name.name); k_inode = kdfs_igrab(filp->f_dentry->d_inode->i_ino); if (k_inode->content_setid == KDDM_SET_UNUSED) { @@ -137,7 +137,7 @@ int kdfs_open(struct inode *inode, struct file *filp) struct kdfs_inode *k_inode; int r = 0; - DEBUG(DBG_KDFS_FILE, DBG_INFO, "open file %s - inode %ld\n", + DEBUG(DBG_INFO, "open file %s - inode %ld\n", filp->f_dentry->d_name.name, inode->i_ino); k_cwsb = __kdfs_get_cwsb(); @@ -149,7 +149,7 @@ int kdfs_open(struct inode *inode, struct file *filp) __kdfs_put_cwsb(); if ((k_sb = kdfs_getsb(inode_linked_node(inode->i_ino))) == NULL) { - DEBUG(DBG_KDFS_SUPERBLK, DBG_ALERT, "No kdfs super-block available\n"); + DEBUG(DBG_ALERT, "No kdfs super-block available\n"); return -EFAULT; } @@ -160,7 +160,7 @@ int kdfs_open(struct inode *inode, struct file *filp) __kdfs_putsb(k_sb); out: - DEBUG(DBG_KDFS_FILE, DBG_INFO, "open file %s: inode %ld: done with error %d\n", + DEBUG(DBG_INFO, "open file %s: inode %ld: done with error %d\n", filp->f_dentry->d_name.name, inode->i_ino, r); return r; @@ -170,7 +170,7 @@ int kdfs_release(struct inode *inode, struct file *filp) { struct kdfs_inode *k_inode; - DEBUG(DBG_KDFS_FILE, DBG_INFO, + DEBUG(DBG_INFO, "Release file %s (i_size %lld) (inode %p)\n", filp->f_dentry->d_name.name, filp->f_dentry->d_inode->i_size, @@ -224,11 +224,11 @@ kddm_set_t *create_file_kddm_set(struct kdfs_inode *k_inode) #endif if (!IS_ERR(kddm_set)) { k_inode->content_setid=kddm_set->id; - DEBUG(DBG_KDFS_DIR, DBG_INFO, "Create content kddm_set for file %s (inode %ld) with id %ld\n", + DEBUG(DBG_INFO, "Create content kddm_set for file %s (inode %ld) with id %ld\n", list_entry(k_inode->inode->i_dentry.next, struct dentry, d_alias)->d_name.name, k_inode->inode->i_ino, k_inode->content_setid); } else { - DEBUG(DBG_KDFS_DIR, DBG_PANIC, "Can't create content kddm_set for file%s (inode %ld)\n", + DEBUG(DBG_PANIC, "Can't create content kddm_set for file%s (inode %ld)\n", list_entry(k_inode->inode->i_dentry.next, struct dentry, d_alias)->d_name.name, k_inode->inode->i_ino); } diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index 22ba378..3e991b0 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -129,7 +129,7 @@ struct kdfs_inode *__kdfs_mknod(struct kdfs_inode *k_pdir, struct kdfs_inode *k_nnod; struct kdfs_super_block *k_sb; - DEBUG(DBG_KDFS_INODE, DBG_TRACE, + DEBUG(DBG_TRACE, "Internal mknod %s (parent dir %ld ino)\n", dentry->d_name.name, k_pdir->inode->i_ino); @@ -149,7 +149,7 @@ struct kdfs_inode *__kdfs_mknod(struct kdfs_inode *k_pdir, k_nnod = kdfs_icreate(ino); /* get a kDFS inode from the kDDM set (k_inode is lock)*/ if (IS_ERR(k_nnod)) { - DEBUG(DBG_KDFS_INODE, DBG_ALERT, "Can't grab new file inode object (ino=%ld)\n", ino); + DEBUG(DBG_ALERT, "Can't grab new file inode object (ino=%ld)\n", ino); return k_nnod; } @@ -198,10 +198,10 @@ struct kdfs_inode *__kdfs_mknod(struct kdfs_inode *k_pdir, // TODO PRIORITY 1: Test return value, test if kdfs_ndir->inode->i_ino == ino kdfs_add_dir_entry(k_pdir, (char *) dentry->d_name.name, ino, mode); - DEBUG(DBG_KDFS_INODE, DBG_TRACE, "i_count before d_instantiate %d\n", atomic_read(&k_nnod->inode->i_count)); + DEBUG(DBG_TRACE, "i_count before d_instantiate %d\n", atomic_read(&k_nnod->inode->i_count)); d_instantiate(dentry, k_nnod->inode); - DEBUG(DBG_KDFS_INODE, DBG_TRACE, "i_count after d_instantiate %d\n", atomic_read(&k_nnod->inode->i_count)); - DEBUG(DBG_KDFS_INODE, DBG_TRACE, "New nod done (ino=%ld, size=%lld)\n", k_nnod->inode->i_ino, k_nnod->inode->i_size); + DEBUG(DBG_TRACE, "i_count after d_instantiate %d\n", atomic_read(&k_nnod->inode->i_count)); + DEBUG(DBG_TRACE, "New nod done (ino=%ld, size=%lld)\n", k_nnod->inode->i_ino, k_nnod->inode->i_size); return k_nnod; } @@ -228,7 +228,7 @@ int kdfs_mknod(struct inode *dir, { struct kdfs_inode *k_pdir, *k_nnod; - DEBUG(DBG_KDFS_INODE, DBG_TRACE, + DEBUG(DBG_TRACE, "New nod %s (parent dir %ld ino)\n", dentry->d_name.name, dir->i_ino); @@ -240,12 +240,12 @@ int kdfs_mknod(struct inode *dir, k_nnod = __kdfs_mknod(k_pdir, dentry, mode, dev); if (k_nnod) { kdfs_iput(k_nnod->inode->i_ino); - DEBUG(DBG_KDFS_INODE, DBG_TRACE, + DEBUG(DBG_TRACE, "New nod (ino=%ld, size=%lld)\n", k_nnod->inode->i_ino,k_nnod->inode->i_size); } else // TODO PRIORITY 2, Adrien, if we got an error we should release the local inode if needed ! - DEBUG(DBG_KDFS_INODE, DBG_TRACE,"New nod creation failed \n"); + DEBUG(DBG_TRACE,"New nod creation failed \n"); kdfs_iput(dir->i_ino); PRINT_FUNCTION_EXIT; @@ -266,13 +266,13 @@ int kdfs_create(struct inode *dir, struct dentry *dentry, struct nameidata *nd) { int res = 0; - DEBUG(DBG_KDFS_INODE, DBG_TRACE, + DEBUG(DBG_TRACE, "create %s (parent dir %ld ino)\n", dentry->d_name.name, dir->i_ino); res = kdfs_mknod(dir, dentry, mode|S_IFREG, 0); - DEBUG(DBG_KDFS_INODE, DBG_TRACE, + DEBUG(DBG_TRACE, "create %s done: res = %d\n", dentry->d_name.name, res); return res; @@ -296,7 +296,7 @@ int kdfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) struct kdfs_inode *k_pdir, *k_nnod; - DEBUG(DBG_KDFS_INODE, DBG_TRACE, + DEBUG(DBG_TRACE, "mkdir %s (parent dir %ld ino)\n", dentry->d_name.name, dir->i_ino); @@ -318,12 +318,12 @@ int kdfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) inc_nlink(k_pdir->inode); kdfs_mark_inode_dirty(k_pdir); } else { - DEBUG(DBG_KDFS_INODE, DBG_TRACE, "New nod creation failed \n"); + DEBUG(DBG_TRACE, "New nod creation failed \n"); err = -ENOSPC; /* No Space on device */ } __kdfs_iput(k_pdir); - DEBUG(DBG_KDFS_INODE, DBG_TRACE, + DEBUG(DBG_TRACE, "mkdir %s done: res = %d\n", dentry->d_name.name, err); return err; @@ -349,7 +349,7 @@ int kdfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) int mode = S_IFLNK|S_IRWXUGO; unsigned len = strlen(symname) + 1; - DEBUG(DBG_KDFS_INODE, DBG_TRACE, "SymLink file %s on %s\n", + DEBUG(DBG_TRACE, "SymLink file %s on %s\n", symname, dentry->d_name.name); /* @@ -367,14 +367,14 @@ int kdfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) k_nnod = __kdfs_mknod(k_pdir, dentry, mode, 0); if (IS_ERR(k_nnod)) { kdfs_iput(k_pdir->inode->i_ino); - DEBUG(DBG_KDFS_INODE, DBG_TRACE, "Can't create a new symlink\n"); + DEBUG(DBG_TRACE, "Can't create a new symlink\n"); return PTR_ERR(k_nnod); } else { /* Get the first file page to write the symb link into */ create_file_kddm_set(k_nnod); k_page = kdfs_grab_page(k_nnod->content_setid, 0); if (IS_ERR(k_page)) - DEBUG (DBG_KDFS_INODE, DBG_PANIC, + DEBUG (DBG_PANIC, "Can't grab page for newnode %ld (contentset_id %ld)\n", k_nnod->inode->i_ino, k_nnod->content_setid); @@ -392,7 +392,7 @@ int kdfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) __kdfs_iput(k_pdir); err = 0; } - DEBUG (DBG_KDFS_INODE, DBG_TRACE, + DEBUG (DBG_TRACE, "KDFS : link file %s on %s: done\n", symname, dentry->d_name.name); return err; @@ -416,7 +416,7 @@ struct dentry *kdfs_lookup(struct inode *dir, struct dentry *dentry, struct dentry* res = NULL; unsigned long ino; - DEBUG(DBG_KDFS_INODE, DBG_INFO, "lookup for file %s\n", + DEBUG(DBG_INFO, "lookup for file %s\n", dentry->d_name.name); if (dentry->d_name.len > KDFS_NAME_LEN) @@ -457,13 +457,13 @@ int __kdfs_unlink(struct kdfs_inode *k_pdir, struct dentry *dentry) { struct kdfs_inode *k_inode = NULL; int retval = 0; - DEBUG(DBG_KDFS_INODE, DBG_INFO, "file %s\n", dentry->d_name.name); + DEBUG(DBG_INFO, "file %s\n", dentry->d_name.name); k_inode = kdfs_igrab(dentry->d_inode->i_ino); retval = kdfs_del_dir_entry(k_pdir, (char *) dentry->d_name.name, dentry->d_inode->i_ino); if (retval < 0 ) { - DEBUG(DBG_KDFS_INODE, DBG_INFO, + DEBUG(DBG_INFO, "Cannot delete direntry (file %s) in directory %ld)\n", dentry->d_name.name, k_pdir->inode->i_ino); goto out; @@ -479,7 +479,7 @@ int __kdfs_unlink(struct kdfs_inode *k_pdir, struct dentry *dentry) out: __kdfs_iput(k_inode); - DEBUG(DBG_KDFS_INODE, DBG_INFO, "done : retval %d\n", retval); + DEBUG(DBG_INFO, "done : retval %d\n", retval); return retval; } @@ -497,7 +497,7 @@ int kdfs_unlink(struct inode *dir, struct dentry *dentry) { struct kdfs_inode *k_pdir = NULL; int error = 0; - DEBUG(DBG_KDFS_INODE, DBG_INFO, "unlink file %s\n", dentry->d_name.name); + DEBUG(DBG_INFO, "unlink file %s\n", dentry->d_name.name); /* Delete direntry from parent directory */ k_pdir = kdfs_igrab(dir->i_ino); @@ -505,12 +505,12 @@ int kdfs_unlink(struct inode *dir, struct dentry *dentry) kdfs_iput(dir->i_ino); if (!error) - DEBUG(DBG_KDFS_INODE, DBG_INFO, + DEBUG(DBG_INFO, "unlink done : %d links left (inode count %d) (dentry count %d)\n", dentry->d_inode->i_nlink, atomic_read (&dentry->d_inode->i_count), atomic_read (&dentry->d_count)); else - DEBUG (DBG_KDFS_INODE, DBG_INFO, + DEBUG (DBG_INFO, "Wrong unlink (error=%d)\n", error); return error; @@ -542,7 +542,7 @@ int kdfs_rename (struct inode *cur_dir, struct inode *newinode; int err = 0; - DEBUG (DBG_KDFS_INODE, DBG_TRACE, + DEBUG (DBG_TRACE, "(Start) move entry %s from directory %ld to %s in directory %ld\n", cur_dentry->d_name.name, cur_dir->i_ino, new_dentry->d_name.name, new_dir->i_ino); @@ -595,7 +595,7 @@ int kdfs_rename (struct inode *cur_dir, err = kdfs_del_dir_entry(k_currentdir, (char *) cur_dentry->d_name.name, cur_dentry->d_inode->i_ino); if (err < 0) { - DEBUG(DBG_KDFS_INODE, DBG_INFO, "Cannot delete direntry (file %s) in directory %ld)\n", cur_dentry->d_name.name, cur_dir->i_ino); + DEBUG(DBG_INFO, "Cannot delete direntry (file %s) in directory %ld)\n", cur_dentry->d_name.name, cur_dir->i_ino); kdfs_iput(cur_dir->i_ino); kdfs_iput(k_curinode->inode->i_ino); return err; @@ -648,7 +648,7 @@ int kdfs_rename (struct inode *cur_dir, err = kdfs_add_dir_entry(k_newdir, (char *) new_dentry->d_name.name, cur_dentry->d_inode->i_ino, cur_dentry->d_inode->i_mode); if (err < 0) - DEBUG(DBG_KDFS_INODE, DBG_PANIC, + DEBUG(DBG_PANIC, "Cannot add direntry (file %s) in directory %ld)\n", new_dentry->d_name.name, new_dir->i_ino); else { @@ -657,7 +657,7 @@ int kdfs_rename (struct inode *cur_dir, inc_nlink(new_dir); err = kdfs_del_dir_entry(k_currentdir, (char *) cur_dentry->d_name.name, cur_dir->i_ino); if (err < 0) - DEBUG(DBG_KDFS_INODE, DBG_PANIC, + DEBUG(DBG_PANIC, "Cannot delete direntry (file %s) in directory %ld)\n", cur_dentry->d_name.name, cur_dir->i_ino); else { @@ -679,11 +679,11 @@ int kdfs_rename (struct inode *cur_dir, out: if (err < 0) - DEBUG(DBG_KDFS_INODE, DBG_TRACE, "(Exit) can't move entry %s from directory %ld to %s in directory %ld: (err=%d)\n", + DEBUG(DBG_TRACE, "(Exit) can't move entry %s from directory %ld to %s in directory %ld: (err=%d)\n", cur_dentry->d_name.name, cur_dir->i_ino, new_dentry->d_name.name, new_dir->i_ino,err); else - DEBUG(DBG_KDFS_INODE, DBG_TRACE, "(Exit) move entry %s from directory %ld to %s in directory %ld\n", + DEBUG(DBG_TRACE, "(Exit) move entry %s from directory %ld to %s in directory %ld\n", cur_dentry->d_name.name, cur_dir->i_ino, new_dentry->d_name.name, new_dir->i_ino); @@ -708,7 +708,7 @@ int kdfs_rmdir (struct inode *dir, struct dentry *dentry) int error = -ENOTEMPTY; unsigned long tmp_ino = dentry->d_inode->i_ino; - DEBUG(DBG_KDFS_INODE, DBG_INFO, "remove directory %s\n", dentry->d_name.name); + DEBUG(DBG_INFO, "remove directory %s\n", dentry->d_name.name); k_pdir = kdfs_igrab(dir->i_ino); k_inode = kdfs_iget(tmp_ino); @@ -731,7 +731,7 @@ int kdfs_rmdir (struct inode *dir, struct dentry *dentry) __kdfs_iput(k_inode); __kdfs_iput(k_pdir); - DEBUG(DBG_KDFS_INODE, DBG_INFO, "rmdir done with err %d\n", error); + DEBUG(DBG_INFO, "rmdir done with err %d\n", error); return error; } @@ -751,7 +751,7 @@ int kdfs_setattr(struct dentry *dentry, struct iattr *attr) PRINT_FUNCTION_NAME; - DEBUG(DBG_KDFS_INODE, DBG_INFO, "KDFS : setattr for file %s\n", dentry->d_name.name); + DEBUG(DBG_INFO, "KDFS : setattr for file %s\n", dentry->d_name.name); k_inode = kdfs_igrab(inode->i_ino); error = inode_change_ok(inode, attr); @@ -764,11 +764,11 @@ int kdfs_setattr(struct dentry *dentry, struct iattr *attr) __kdfs_iput(k_inode); if (!error) - DEBUG (DBG_KDFS_INODE, DBG_INFO, + DEBUG (DBG_INFO, "KDFS: setattr for file %s: done\n", dentry->d_name.name); else - DEBUG (DBG_KDFS_INODE, DBG_INFO, + DEBUG (DBG_INFO, "KDFS: setattr for file %s exited with error %d\n", dentry->d_name.name, error); @@ -788,7 +788,7 @@ int kdfs_getattr(struct vfsmount *mnt, struct kdfs_cw_sb *k_cwsb; int r = 0; - DEBUG (DBG_KDFS_INODE, DBG_TRACE, "getattr for file %s (inodeid=%ld)\n", dentry->d_name.name,inode->i_ino); + DEBUG (DBG_TRACE, "getattr for file %s (inodeid=%ld)\n", dentry->d_name.name,inode->i_ino); k_cwsb = __kdfs_grab_cwsb(); if (!test_bit(inode_linked_node(inode->i_ino), (unsigned long *) k_cwsb->cw_bitmap->map)) { r = -ENODEV; @@ -801,7 +801,7 @@ int kdfs_getattr(struct vfsmount *mnt, //k_inode->inode->i_blocks = k_inode->inode->i_size / (k_inode->inode->i_blkbits/8); //TODO Find a way to determine n for 2^n = (k_inode->inode->i_blkbits/8) k_inode->inode->i_blocks = (k_inode->inode->i_size >> 9 ) + 1; - DEBUG(DBG_KDFS_INODE, DBG_INFO, + DEBUG(DBG_INFO, "blocks = %ld, size= %lld, blksize =%d\n", k_inode->inode->i_blocks, k_inode->inode->i_size, (k_inode->inode->i_blkbits / 8)); /* Build stat fields from the inode */ @@ -818,7 +818,7 @@ void *kdfs_follow_link_light(struct dentry *dentry, struct nameidata *nd) struct page *page; struct kdfs_inode *k_inode = NULL; ASSERT(dentry != NULL); - DEBUG(DBG_KDFS_INODE, DBG_TRACE, "file %s\n", dentry->d_name.name); + DEBUG(DBG_TRACE, "file %s\n", dentry->d_name.name); k_inode = kdfs_igrab(dentry->d_inode->i_ino); if (k_inode->content_setid == KDDM_SET_UNUSED) { @@ -930,7 +930,7 @@ struct kdfs_inode *kdfs_icreate(unsigned long ino) /* Release a copy */ void __kdfs_iput(struct kdfs_inode *k_inode) { - DEBUG(DBG_KDFS_INODE, DBG_INFO, "Inode: %ld, i_count = %d\n", k_inode->inode->i_ino, atomic_read(&k_inode->inode->i_count)); + DEBUG(DBG_INFO, "Inode: %ld, i_count = %d\n", k_inode->inode->i_ino, atomic_read(&k_inode->inode->i_count)); if (k_inode->flags & K_INODE_DIRTY) { kddm_sync_frozen_object(kddm_def_ns, KDFS_INODE_KDDM_ID, k_inode->inode->i_ino); k_inode->flags &= ~K_INODE_DIRTY; @@ -1043,7 +1043,7 @@ int kdfs_iol_inode_alloc_object (kddm_obj_t *objEntry, */ if (objEntry->object == NULL) { - DEBUG (DBG_KDFS_INODE, DBG_INFO, "Alloc inode (%ld;%ld)\n", kddm_set->id, objid); + DEBUG (DBG_INFO, "Alloc inode (%ld;%ld)\n", kddm_set->id, objid); /* Object have been not allocated before */ k_inode = kmalloc(sizeof(struct kdfs_inode), GFP_KERNEL); ASSERT(k_inode != NULL); @@ -1062,7 +1062,7 @@ int kdfs_iol_inode_alloc_object (kddm_obj_t *objEntry, k_inode->flags = K_INODE_INITIALIZING; if (k_inode->inode == NULL) - DEBUG(DBG_KDFS_INODE, DBG_PANIC, "Cannot find inode %ld\n", objid); + DEBUG(DBG_PANIC, "Cannot find inode %ld\n", objid); k_inode->content_setid = KDDM_SET_UNUSED; @@ -1070,7 +1070,7 @@ int kdfs_iol_inode_alloc_object (kddm_obj_t *objEntry, objEntry->object = k_inode; } else { /* Object id has beend already allocated so reused the same structure */ - DEBUG(DBG_KDFS_INODE, DBG_PANIC, "Object %ld was already allocated \n", objid); + DEBUG(DBG_PANIC, "Object %ld was already allocated \n", objid); //kdfs_inode = (struct kdfs_inode*) objEntry->object; // seems to be useless since we do not have to return the object } @@ -1116,7 +1116,7 @@ int kdfs_iol_inode_first_touch(kddm_obj_t *objEntry, struct kdfs_super_block *k_sb = kdfs_twice_grabsb(kerrighed_node_id); ASSERT(k_sb != NULL); - DEBUG(DBG_KDFS_INODE, DBG_INFO, + DEBUG(DBG_INFO, "First touch inode (%ld;%ld)\n", kddm_set->id, objid); @@ -1129,7 +1129,7 @@ int kdfs_iol_inode_first_touch(kddm_obj_t *objEntry, k_inode->inode = new_inode (k_sb->sb); k_inode->flags = K_INODE_CREATING|K_INODE_INITIALIZING; if (k_inode->inode == NULL) - DEBUG(DBG_KDFS_INODE, DBG_PANIC, "Cannot find inode %ld\n", objid); + DEBUG(DBG_PANIC, "Cannot find inode %ld\n", objid); k_inode->inode->i_ino = objid; insert_inode_hash(k_inode->inode); } @@ -1148,7 +1148,7 @@ int kdfs_iol_inode_first_touch(kddm_obj_t *objEntry, k_inode->content_setid = KDDM_SET_UNUSED; objEntry->object = (void *) k_inode; - DEBUG(DBG_KDFS_INODE, DBG_INFO, "inode count %d\n", atomic_read(&k_inode->inode->i_count)); + DEBUG(DBG_INFO, "inode count %d\n", atomic_read(&k_inode->inode->i_count)); } if (inode_linked_node(objid) == kerrighed_node_id) { @@ -1232,7 +1232,7 @@ int kdfs_iol_inode_invalidate_object(kddm_obj_t *objEntry, struct kdfs_inode *k_inode; struct dentry *dentry, *dchild; - DEBUG(DBG_KDFS_INODE, DBG_INFO, "Invalidate inode (%ld;%ld)\n", + DEBUG(DBG_INFO, "Invalidate inode (%ld;%ld)\n", set->id, objid); k_inode = objEntry->object; @@ -1271,7 +1271,7 @@ int kdfs_iol_inode_insert_object(kddm_obj_t *objEntry, { struct kdfs_inode *k_inode = (struct kdfs_inode *) objEntry->object; - DEBUG(DBG_KDFS_INODE, DBG_INFO, "Insert inode (%ld;%ld)\n", set->id, objid); + DEBUG(DBG_INFO, "Insert inode (%ld;%ld)\n", set->id, objid); /* * If this is the first insert in the set (just called after the first_touch) @@ -1282,13 +1282,13 @@ int kdfs_iol_inode_insert_object(kddm_obj_t *objEntry, /* According to the mode, set the right operations */ switch (k_inode->inode->i_mode & S_IFMT) { case S_IFREG: - DEBUG(DBG_KDFS_SUPERBLK, DBG_TRACE, "Set file operations %o\n", k_inode->inode->i_mode & S_IFMT); + DEBUG(DBG_TRACE, "Set file operations %o\n", k_inode->inode->i_mode & S_IFMT); k_inode->inode->i_op = &kdfs_file_inode_operations; k_inode->inode->i_fop = &kdfs_file_fops; k_inode->inode->i_mapping->a_ops = &kdfs_aops; break; case S_IFDIR: - DEBUG (DBG_KDFS_SUPERBLK, DBG_TRACE, "Set dir operations %o\n", k_inode->inode->i_mode & S_IFMT); + DEBUG (DBG_TRACE, "Set dir operations %o\n", k_inode->inode->i_mode & S_IFMT); k_inode->inode->i_op = &kdfs_dir_inode_operations; k_inode->inode->i_fop = &kdfs_dir_fops; k_inode->inode->i_mapping->a_ops = &kdfs_aops; @@ -1304,10 +1304,10 @@ int kdfs_iol_inode_insert_object(kddm_obj_t *objEntry, init_special_inode(k_inode->inode, k_inode->inode->i_mode, k_inode->inode->i_sb->s_dev); break; default: - DEBUG(DBG_KDFS_INODE, DBG_PANIC, + DEBUG(DBG_PANIC, "Cannot set kdfs inode operations %o (ino %ld)\n", k_inode->inode->i_mode & S_IFMT, k_inode->inode->i_ino); - DEBUG(DBG_KDFS_INODE, DBG_PANIC, "filename %s\n", + DEBUG(DBG_PANIC, "filename %s\n", list_entry(k_inode->inode->i_dentry.next, struct dentry, d_alias)->d_name.name); break; } @@ -1338,13 +1338,13 @@ int kdfs_iol_inode_sync_object(kddm_obj_t *objEntry, struct kdfs_inode *kdfs_inode = NULL; ASSERT(objEntry != NULL); - DEBUG(DBG_KDFS_INODE, DBG_INFO, "Sync inode %ld\n", objid); + DEBUG(DBG_INFO, "Sync inode %ld\n", objid); kdfs_inode = objEntry->object; ASSERT(kdfs_inode != NULL); if (kdfs_inode->inode == NULL) { - DEBUG(DBG_KDFS_INODE, DBG_ALERT, "entry is NULL, strange\n"); + DEBUG(DBG_ALERT, "entry is NULL, strange\n"); return -1; } @@ -1365,7 +1365,7 @@ int kdfs_iol_inode_remove_object(void *object, kddm_set_t *set, objid_t objid) if ((inode_linked_node(objid) == kerrighed_node_id) && (k_inode->flags & K_INODE_TODELETE)) { /* Destroy locally */ ASSERT(k_inode->inode->i_nlink == 0); - DEBUG(DBG_KDFS_INODE, DBG_INFO, "We are on the linked node and the file has to be deleted\n"); + DEBUG(DBG_INFO, "We are on the linked node and the file has to be deleted\n"); /* Actually file is currently deleted in the super.c: kdfs_delete_inode */ kfree(object); } @@ -1377,7 +1377,7 @@ int kdfs_iol_inode_remove_object(void *object, kddm_set_t *set, objid_t objid) //TODO NOW: Should we destroy? #if 0 put_associated_set(kddm_set); - DEBUG (DBG_KDFS_SUPERBLK, DBG_INFO,"\n\n\n\n REMOVE KDDM SET\n\n\n"); + DEBUG (DBG_INFO,"\n\n\n\n REMOVE KDDM SET\n\n\n"); _destroy_associated_set(kddm_set); kdfs_inode->content_setid = KDDM_SET_UNUSED; #endif diff --git a/fs/kdfs/physical_fs.c b/fs/kdfs/physical_fs.c index 51c2a01..36273ca 100644 --- a/fs/kdfs/physical_fs.c +++ b/fs/kdfs/physical_fs.c @@ -47,7 +47,7 @@ long create_phys_dir(const char *pathname, uid_t saved_uid; gid_t saved_gid; - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "Create dir %s\n", pathname); + DEBUG(DBG_INFO, "Create dir %s\n", pathname); saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; @@ -118,7 +118,7 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) uid_t saved_uid; gid_t saved_gid; - DEBUG(DBG_KDFS_NATIVEFS, DBG_TRACE, "Remove dir %s\n", pathname); + DEBUG(DBG_TRACE, "Remove dir %s\n", pathname); saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; @@ -132,20 +132,20 @@ long remove_phys_dir(const char *pathname, uid_t uid, gid_t gid) file = filp_open(pathname, O_LARGEFILE|O_RDONLY, 0644); if (IS_ERR(file) && PTR_ERR(file) == -ENOENT) { - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "Can't access to phys_dir %s\n", pathname); + DEBUG(DBG_INFO, "Can't access to phys_dir %s\n", pathname); goto out; } dentry = file->f_dentry; dir = dentry->d_parent->d_inode; - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, + DEBUG(DBG_INFO, "Remove dir %s from dir %s\n", dentry->d_name.name, dentry->d_parent->d_name.name); res = vfs_rmdir(dir, dentry); - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "After vfs_rmdir dir %s from dir %s\n", dentry->d_name.name, + DEBUG(DBG_INFO, "After vfs_rmdir dir %s from dir %s\n", dentry->d_name.name, dentry->d_parent->d_name.name); // TODO PRIORITY 3, Adrien Usefull / Useless ? @@ -185,7 +185,7 @@ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_ gid_t saved_gid; struct file *file; - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, + DEBUG(DBG_INFO, "Open physical file %s with flags 0x%08x - mode %o\n", filename, flags, mode); @@ -208,7 +208,7 @@ struct file *open_phys_file(char *filename, int flags, int mode, uid_t uid, gid_ current->fs->rootmnt = saved_mnt; current->fs->root = saved_root; - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "Open physical file %s done : %p\n", filename, file); + DEBUG(DBG_INFO, "Open physical file %s done : %p\n", filename, file); return file; } @@ -227,7 +227,7 @@ int close_phys_file(struct file *file) { int res; - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "Close physical file %s\n", file->f_dentry->d_name.name); + DEBUG(DBG_INFO, "Close physical file %s\n", file->f_dentry->d_name.name); res = filp_close(file, current->files); return res; } @@ -318,7 +318,7 @@ int kdfs_phys_read(struct file *file, char *addr, size_t len, loff_t *pos) int ret; mm_segment_t old_fs; - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "Read Native file %s\n", file->f_dentry->d_name.name); + DEBUG(DBG_INFO, "Read Native file %s\n", file->f_dentry->d_name.name); old_fs = get_fs(); set_fs(KERNEL_DS); /* Enable to read in kernel memory */ @@ -353,7 +353,7 @@ int kdfs_phys_write(struct file *file, char *addr, size_t len, loff_t *pos) int ret; mm_segment_t old_fs; - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "Write Native file %s\n", file->f_dentry->d_name.name); + DEBUG(DBG_INFO, "Write Native file %s\n", file->f_dentry->d_name.name); old_fs = get_fs(); set_fs(KERNEL_DS); /* Enable to read in kernel memory */ @@ -363,7 +363,7 @@ int kdfs_phys_write(struct file *file, char *addr, size_t len, loff_t *pos) lockdep_on(); set_fs(old_fs); /* Disable to read in kernel memory */ - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "Write Native file done, %d bytes written\n", ret); + DEBUG(DBG_INFO, "Write Native file done, %d bytes written\n", ret); return ret; } @@ -390,7 +390,7 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) uid_t saved_uid; gid_t saved_gid; - DEBUG(DBG_KDFS_NATIVEFS, DBG_TRACE, "Remove file %s\n", filename); + DEBUG(DBG_TRACE, "Remove file %s\n", filename); saved_mnt = current->fs->rootmnt; saved_root = current->fs->root; @@ -405,7 +405,7 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) file = filp_open(filename, O_LARGEFILE|O_RDONLY, 0644); if (IS_ERR(file) && PTR_ERR(file) == -ENOENT) { - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "Can't access to physical file %s\n", filename); + DEBUG(DBG_INFO, "Can't access to physical file %s\n", filename); goto out; } @@ -418,13 +418,13 @@ int remove_phys_file(const char *filename, uid_t uid, gid_t gid) //dput(dentry); // put_filp(file); - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, + DEBUG(DBG_INFO, "Remove file %s from dir %s\n", dentry->d_name.name, dentry->d_parent->d_name.name); res = vfs_unlink(dir, dentry); - DEBUG(DBG_KDFS_NATIVEFS, DBG_INFO, "After vfs_unlink res = %d\n", res); + DEBUG(DBG_INFO, "After vfs_unlink res = %d\n", res); out: current->fsuid = saved_uid; diff --git a/fs/kdfs/super.c b/fs/kdfs/super.c index d230562..8711213 100644 --- a/fs/kdfs/super.c +++ b/fs/kdfs/super.c @@ -167,27 +167,27 @@ int __kdfs_fill_sb(struct kdfs_super_block *k_sb) k_sb->sb_file = open_phys_file(phys_filename, O_RDWR, 0644, 0, 0); if (IS_ERR(k_sb->sb_file)) { - DEBUG (DBG_KDFS_SUPERBLK, DBG_PANIC, "Can't access the KDFS superfile\n" + DEBUG (DBG_PANIC, "Can't access the KDFS superfile\n" "Please verify the type of the partition %s, it should be a KDFS one", k_sb->k_opt->part_name); goto out_alloc; } /* Get root_nodeid */ - DEBUG(DBG_KDFS_SUPERBLK, DBG_INFO, "file name %s, file position %lld \n", + DEBUG(DBG_INFO, "file name %s, file position %lld \n", k_sb->sb_file->f_dentry->d_name.name, k_sb->sb_file->f_pos); res = kdfs_phys_read(k_sb->sb_file, (char *) &k_sb->root_nodeid, sizeof(k_sb->root_nodeid), &k_sb->sb_file->f_pos); if (res != sizeof(k_sb->root_nodeid)) { - DEBUG(DBG_KDFS_SUPERBLK, DBG_PANIC, "Cannot get the node ID\n"); + DEBUG(DBG_PANIC, "Cannot get the node ID\n"); close_phys_file(k_sb->sb_file); goto out_alloc; } /* Check that k_sb->root_nodeid is reasonably bounded */ if (k_sb->root_nodeid < KDFS_MIN_NODEID || k_sb->root_nodeid > KDFS_MAX_NODEID) { - DEBUG (DBG_KDFS_SUPERBLK, DBG_PANIC, + DEBUG (DBG_PANIC, "Unexpected node ID found in the " "KDFS superfile\nFound %d - expected a number between %d and %d\n", k_sb->root_nodeid, KDFS_MIN_NODEID, KDFS_MAX_NODEID); @@ -199,18 +199,18 @@ int __kdfs_fill_sb(struct kdfs_super_block *k_sb) /* Load the complete bitmap */ res = sb_bitmap_load(k_sb->sb_file, k_sb->sb_file->f_pos, k_sb); - DEBUG(DBG_KDFS_SUPERBLK, DBG_INFO, "BMP size: %ld\n\n", k_sb->inode_bitmap->size); + DEBUG(DBG_INFO, "BMP size: %ld\n\n", k_sb->inode_bitmap->size); if (res == -1) { - DEBUG (DBG_KDFS_SUPERBLK, DBG_PANIC, "You're using an old version of kDFS superblock file\n"); + DEBUG (DBG_PANIC, "You're using an old version of kDFS superblock file\n"); close_phys_file(k_sb->sb_file); goto out_alloc; } else if (res == -2) { - DEBUG (DBG_KDFS_SUPERBLK, DBG_PANIC, "Short read - bitmap\n"); + DEBUG (DBG_PANIC, "Short read - bitmap\n"); close_phys_file(k_sb->sb_file); goto out_alloc; } - DEBUG(DBG_KDFS_SUPERBLK, DBG_TRACE, + DEBUG(DBG_TRACE, "Fill sb from superfile: root_nodeid %d\n", k_sb->root_nodeid); res = 0; @@ -251,12 +251,12 @@ ino_t kdfs_get_freeino(struct kdfs_super_block *k_sb) /* Check if the bitmap is full */ if (ino == KDFS_BMP_BAD_INDEX) { - DEBUG(DBG_KDFS_SUPERBLK, DBG_PANIC, "Bitmap full\n"); + DEBUG(DBG_PANIC, "Bitmap full\n"); goto out; } - DEBUG(DBG_KDFS_SUPERBLK, DBG_INFO, "Allocated inode #%ld\n", ino); - DEBUG(DBG_KDFS_SUPERBLK, DBG_INFO, "Next free inode #: %lu\n", + DEBUG(DBG_INFO, "Allocated inode #%ld\n", ino); + DEBUG(DBG_INFO, "Next free inode #: %lu\n", sb_bitmap_get_available(k_sb)); ino = full_inode_number(ino, k_sb->sb_nodeid); @@ -285,7 +285,7 @@ void kdfs_remove_local_ino(struct kdfs_super_block *k_sb, unsigned long ino) int res = 0; PRINT_FUNCTION_NAME; - DEBUG(DBG_KDFS_SUPERBLK, DBG_INFO, "fre... [truncated message content] |
From: Marko O. <d0...@us...> - 2009-10-15 17:06:31
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via 5d0d61a6740ae2bed50dc9843d5e68ea36b004e5 (commit) from aae40f37e26d7b3ec7b385a9b958cb1fb5cb0634 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 5d0d61a6740ae2bed50dc9843d5e68ea36b004e5 Author: Marko Obrovac <mar...@in...> Date: Thu Oct 15 17:01:59 2009 +0000 [MINOR] Add kdfs to the fs makefile [ADD] Add a makefile for kdfs (just renamed Kbuild) [MINOR] change the debug headers to ones that suite the current Kerrighed path diff --git a/fs/Makefile b/fs/Makefile index af6d047..9fafa0b 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -124,3 +124,4 @@ obj-$(CONFIG_OCFS2_FS) += ocfs2/ obj-$(CONFIG_BTRFS_FS) += btrfs/ obj-$(CONFIG_GFS2_FS) += gfs2/ obj-$(CONFIG_EXOFS_FS) += exofs/ +obj-$(CONFIG_KDFS_FS) += kdfs/ diff --git a/fs/kdfs/Kbuild b/fs/kdfs/Makefile similarity index 100% rename from fs/kdfs/Kbuild rename to fs/kdfs/Makefile diff --git a/fs/kdfs/debug_kdfs.h b/fs/kdfs/debug_kdfs.h index 712cce9..15df5b1 100644 --- a/fs/kdfs/debug_kdfs.h +++ b/fs/kdfs/debug_kdfs.h @@ -18,8 +18,8 @@ #include <linux/err.h> /* Kerrighed headers (dynamical debugging) */ -#include <tools/debug.h> -#include <tools/debug_tools2.h> +#include <kerrighed/debug.h> +//#include <kerrighed/debug_tools2.h> /* DEBUG Level */ #define DBG_PANIC 0 ----------------------------------------------------------------------- Summary of changes: fs/Makefile | 1 + fs/kdfs/{Kbuild => Makefile} | 0 fs/kdfs/debug_kdfs.h | 4 ++-- 3 files changed, 3 insertions(+), 2 deletions(-) rename fs/kdfs/{Kbuild => Makefile} (100%) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-15 16:34:30
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "UNNAMED PROJECT". The branch, master has been updated via 99784aa03802a96d85649b18a1173e6637d26e57 (commit) from 59469d266fffe657366e35b8f1eb4c77a13d7ba8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 99784aa03802a96d85649b18a1173e6637d26e57 Author: Marko Obrovac <mar...@in...> Date: Thu Oct 15 16:31:33 2009 +0000 [test] testing the diff feature... diff --git a/README b/README index d1528e9..995a5c1 100644 --- a/README +++ b/README @@ -3,6 +3,7 @@ These are the release notes for Kerrighed +add a test line to see the diff in the mail WHAT IS KERRIGHED ? ----------------------------------------------------------------------- Summary of changes: README | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) hooks/post-receive -- UNNAMED PROJECT |
From: Marko O. <d0...@us...> - 2009-10-15 15:13:55
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via aae40f37e26d7b3ec7b385a9b958cb1fb5cb0634 (commit) from 730d35668b2dc9d1807f4da4ff060d0ccdeab53c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit aae40f37e26d7b3ec7b385a9b958cb1fb5cb0634 Author: Marko Obrovac <mar...@in...> Date: Thu Oct 15 17:10:24 2009 +0200 a test ----------------------------------------------------------------------- Summary of changes: fs/kdfs/Kbuild | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-15 14:30:19
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "UNNAMED PROJECT". The branch, master has been updated via 59469d266fffe657366e35b8f1eb4c77a13d7ba8 (commit) from 139a382d2bf8b4136582c3b835d6e3da0586e2d7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 59469d266fffe657366e35b8f1eb4c77a13d7ba8 Author: Marko Obrovac <mar...@in...> Date: Thu Oct 15 16:27:34 2009 +0200 [test] testing... ----------------------------------------------------------------------- Summary of changes: test | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-) delete mode 100644 test hooks/post-receive -- UNNAMED PROJECT |
From: Marko O. <d0...@us...> - 2009-10-14 17:50:33
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "UNNAMED PROJECT". The branch, master has been updated via 139a382d2bf8b4136582c3b835d6e3da0586e2d7 (commit) from 690b0e9a32255c3f6f195b570337155a0538a9e1 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 139a382d2bf8b4136582c3b835d6e3da0586e2d7 Author: Marko Obrovac <d0...@us...> Date: Wed Oct 14 19:47:53 2009 +0200 [test] vjkfkdlkj ----------------------------------------------------------------------- Summary of changes: test | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) hooks/post-receive -- UNNAMED PROJECT |
From: Marko O. <d0...@us...> - 2009-10-14 17:29:06
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, master has been updated via 9d670d2889578bcd82fb2d985e78508bfc342a49 (commit) from 976e7b299ff27bf6dd46c3dd1ae07815f3fcf1e7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9d670d2889578bcd82fb2d985e78508bfc342a49 Author: Marko Obrovac <d0...@us...> Date: Wed Oct 14 19:25:56 2009 +0200 [TEST] another hook-mail test ----------------------------------------------------------------------- Summary of changes: test | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) delete mode 100644 test hooks/post-receive -- kdfs |
From: Marko O. <d0...@us...> - 2009-10-14 17:19:11
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, master has been updated via 976e7b299ff27bf6dd46c3dd1ae07815f3fcf1e7 (commit) from 5dbef9949ade74cd4cdd22da26b84a048725d5dd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 976e7b299ff27bf6dd46c3dd1ae07815f3fcf1e7 Author: Marko Obrovac <d0...@us...> Date: Wed Oct 14 19:15:37 2009 +0200 [TEST] test the hooks ----------------------------------------------------------------------- Summary of changes: test | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 test hooks/post-receive -- kdfs |