From: alebre <al...@us...> - 2011-01-10 09:01:40
|
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 b181310573abd91710fc46f94c350ebb83d46cdb (commit) via 651747c41cda1c7441c8fe6c2170af258eab9149 (commit) via 5beec156ca83753b3f8d21dd882ae051db48859c (commit) from 50baf57cb516e181ece3f3fb61d1dc9953b05fcb (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 b181310573abd91710fc46f94c350ebb83d46cdb Author: ad <leb...@fr...> Date: Mon Jan 10 09:04:04 2011 +0000 Switch debugging traces during the mount operations from PANIC to ALERT - Adrien diff --git a/fs/kdfs/super.c b/fs/kdfs/super.c index 9df0fea..bcafba6 100644 --- a/fs/kdfs/super.c +++ b/fs/kdfs/super.c @@ -172,7 +172,7 @@ 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_PANIC, "Can't access the KDFS superfile\n" + DEBUG (DBG_ALERT, "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; @@ -185,14 +185,14 @@ int __kdfs_fill_sb(struct kdfs_super_block *k_sb) 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_PANIC, "Cannot get the node ID\n"); + DEBUG(DBG_ALERT, "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_PANIC, + DEBUG (DBG_ALERT, "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); @@ -206,11 +206,11 @@ int __kdfs_fill_sb(struct kdfs_super_block *k_sb) res = sb_bitmap_load(k_sb->sb_file, k_sb->sb_file->f_pos, k_sb); DEBUG(DBG_INFO, "BMP size: %lu\n\n", k_sb->inode_bitmap->size); if (res == -1) { - DEBUG (DBG_PANIC, "You're using an old version of kDFS superblock file\n"); + DEBUG (DBG_ALERT, "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_PANIC, "Short read - bitmap\n"); + DEBUG (DBG_ALERT, "Short read - bitmap\n"); close_phys_file(k_sb->sb_file); goto out_alloc; } commit 651747c41cda1c7441c8fe6c2170af258eab9149 Author: ad <leb...@fr...> Date: Sat Jan 8 19:26:20 2011 +0000 Fix 1./ kdfs_netinode PRAGMA size 2./ stack warning during import/export functions diff --git a/fs/kdfs/common.h b/fs/kdfs/common.h index 3aa92c5..1761bf9 100644 --- a/fs/kdfs/common.h +++ b/fs/kdfs/common.h @@ -29,14 +29,6 @@ #define KDFS_MAX_NO_NODES ((KDFS_MAX_NODEID) - (KDFS_MIN_NODEID) + 1) -/* Max number of extent records that fit in a kddm object */ -/* if you change the kdfs_netinode or kdfs_file_extent_info - structures, please update this constant! - 124 = size of kdfs_netinode (without the extents array) - 24 = size of kdfs_file_extent_info */ -#define FILE_EXT_MAX_MEMBERS ((PAGE_SIZE - 124)/24) - - typedef short kdfs_node_t; /* kerrighed_node_t*/ /* FILE STRIPING TYPES */ @@ -69,6 +61,7 @@ struct kdfs_inode { struct list_head extents_list; }; + /* * Network representation of kdfs_inode * exploited during import and export functions @@ -95,7 +88,16 @@ struct kdfs_netinode { /* k_inode flags*/ char flags; +}; + +/* Max number of extent records that fit/be imported/be exported in a kddm object + * if you change the kdfs_netinode or kdfs_file_extent_info + * structures, please update this constant! + */ +#define FILE_EXT_MAX_MEMBERS ((PAGE_SIZE - sizeof(struct kdfs_netinode)-sizeof(size_t))/sizeof(struct kdfs_file_extent_info))-1 +struct kdfs_fullnetinode{ + struct kdfs_netinode info; /* File extents portion */ size_t no_extents; struct kdfs_file_extent_info extents[FILE_EXT_MAX_MEMBERS]; diff --git a/fs/kdfs/file_extent.c b/fs/kdfs/file_extent.c index b071718..6440c2f 100644 --- a/fs/kdfs/file_extent.c +++ b/fs/kdfs/file_extent.c @@ -303,7 +303,7 @@ size_t kdfs_file_extent_read_from_file(struct kdfs_inode *k_inode) } -void kdfs_file_extent_net_export(struct kdfs_inode *k_inode, struct kdfs_netinode *net_inode) +void kdfs_file_extent_net_export(struct kdfs_inode *k_inode, struct kdfs_fullnetinode *net_inode) { int list_count = 0; struct kdfs_file_extent *curr; @@ -329,7 +329,7 @@ void kdfs_file_extent_net_export(struct kdfs_inode *k_inode, struct kdfs_netinod } -void kdfs_file_extent_net_import(struct kdfs_inode *k_inode, struct kdfs_netinode *net_inode) +void kdfs_file_extent_net_import(struct kdfs_inode *k_inode, struct kdfs_fullnetinode *net_inode) { int index; struct kdfs_file_extent *new_extent, *curr; diff --git a/fs/kdfs/file_extent.h b/fs/kdfs/file_extent.h index c55e5e8..e2f29d1 100644 --- a/fs/kdfs/file_extent.h +++ b/fs/kdfs/file_extent.h @@ -28,8 +28,8 @@ kdfs_node_t kdfs_file_extent_get_page_owner(struct kdfs_inode *k_inode, pgoff_t size_t kdfs_file_extent_dump_to_file(struct kdfs_inode *k_inode, struct file *file); size_t kdfs_file_extent_read_from_file(struct kdfs_inode *k_inode); -void kdfs_file_extent_net_export(struct kdfs_inode *k_inode, struct kdfs_netinode *net_inode); -void kdfs_file_extent_net_import(struct kdfs_inode *k_inode, struct kdfs_netinode *net_inode); +void kdfs_file_extent_net_export(struct kdfs_inode *k_inode, struct kdfs_fullnetinode *net_inode); +void kdfs_file_extent_net_import(struct kdfs_inode *k_inode, struct kdfs_fullnetinode *net_inode); #endif /* __KDFS_FILE_EXTENT__ */ diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index dcea0f8..aa90b7d 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -70,48 +70,48 @@ void print_dentry_cont(struct dentry *entry, int print_inode_info) /* */ /*****************************************************************************/ -static inline void kdfs_export_kdfs_inode(struct kdfs_netinode *dest, struct kdfs_inode *src) +static inline void kdfs_export_kdfs_inode(struct kdfs_fullnetinode *dest, struct kdfs_inode *src) { /* export inode informations */ - dest->i_ino = src->inode->i_ino; - dest->i_size = src->inode->i_size; - dest->i_mode = src->inode->i_mode; - dest->i_nlink = src->inode->i_nlink; - dest->i_uid = src->inode->i_uid; - dest->i_gid = src->inode->i_gid; - dest->i_atime = src->inode->i_atime; - dest->i_mtime = src->inode->i_mtime; - dest->i_ctime = src->inode->i_ctime; - dest->i_version = src->inode->i_version; - dest->i_state = src->inode->i_state; - - atomic_set(&dest->cw_count, atomic_read(&src->cw_count)); + dest->info.i_ino = src->inode->i_ino; + dest->info.i_size = src->inode->i_size; + dest->info.i_mode = src->inode->i_mode; + dest->info.i_nlink = src->inode->i_nlink; + dest->info.i_uid = src->inode->i_uid; + dest->info.i_gid = src->inode->i_gid; + dest->info.i_atime = src->inode->i_atime; + dest->info.i_mtime = src->inode->i_mtime; + dest->info.i_ctime = src->inode->i_ctime; + dest->info.i_version = src->inode->i_version; + dest->info.i_state = src->inode->i_state; + + atomic_set(&dest->info.cw_count, atomic_read(&src->cw_count)); /* export miscellaneous */ - dest->content_setid = src->content_setid; - dest->flags = src->flags; + dest->info.content_setid = src->content_setid; + dest->info.flags = src->flags; } -static inline void kdfs_import_kdfs_inode (struct kdfs_inode *dest, struct kdfs_netinode *src) +static inline void kdfs_import_kdfs_inode (struct kdfs_inode *dest, struct kdfs_fullnetinode *src) { /* import inode informations */ - dest->inode->i_ino=src->i_ino; - dest->inode->i_size = src->i_size; - dest->inode->i_mode = src->i_mode; - dest->inode->i_nlink = src->i_nlink; - dest->inode->i_uid = src->i_uid; - dest->inode->i_gid = src->i_gid; - dest->inode->i_atime = src->i_atime; - dest->inode->i_mtime = src->i_mtime; - dest->inode->i_ctime = src->i_ctime; - dest->inode->i_version = src->i_version; - dest->inode->i_state = src->i_state; - - atomic_set(&dest->cw_count, atomic_read(&src->cw_count)); + dest->inode->i_ino=src->info.i_ino; + dest->inode->i_size = src->info.i_size; + dest->inode->i_mode = src->info.i_mode; + dest->inode->i_nlink = src->info.i_nlink; + dest->inode->i_uid = src->info.i_uid; + dest->inode->i_gid = src->info.i_gid; + dest->inode->i_atime = src->info.i_atime; + dest->inode->i_mtime = src->info.i_mtime; + dest->inode->i_ctime = src->info.i_ctime; + dest->inode->i_version = src->info.i_version; + dest->inode->i_state = src->info.i_state; + + atomic_set(&dest->cw_count, atomic_read(&src->info.cw_count)); /*export miscellaneous */ - dest->content_setid = src->content_setid; - dest->flags = src->flags; + dest->content_setid = src->info.content_setid; + dest->flags = src->info.flags; } /* @@ -1117,9 +1117,11 @@ int kdfs_iol_inode_first_touch(kddm_obj_t *objEntry, } // Case 2: the inode already exists, so fill it from the HDD else { + if (kdfs_fill_kinode(k_sb->sb, objid, k_inode) < 0) DEBUG(DBG_PANIC, "Cannot retrieve the physical informations to fill the k_inode"); - k_inode->flags = K_INODE_OK; + + k_inode->flags = K_INODE_OK; } k_inode->content_setid = KDDM_SET_UNUSED; @@ -1216,19 +1218,21 @@ int kdfs_iol_inode_export_object(struct rpc_desc *desc, int flags) { struct kdfs_inode *src = (struct kdfs_inode *) objEntry->object; - struct kdfs_netinode net_dest; + struct kdfs_fullnetinode *net_dest = kmalloc(sizeof(struct kdfs_fullnetinode), GFP_KERNEL); + int res = 0; PRINT_FUNCTION_NAME; /* export the inode part*/ - kdfs_export_kdfs_inode(&net_dest, src); + kdfs_export_kdfs_inode(net_dest, src); /* export the extents part */ - kdfs_file_extent_net_export(src, &net_dest); + kdfs_file_extent_net_export(src, net_dest); - res = rpc_pack_type(desc, net_dest); + res = rpc_pack_type(desc, *net_dest); + kfree(net_dest); PRINT_FUNCTION_EXIT; return res; } @@ -1248,18 +1252,19 @@ int kdfs_iol_inode_import_object(struct rpc_desc *desc, { int res = 0; struct kdfs_inode *inode_dst = (struct kdfs_inode*) objEntry->object; - struct kdfs_netinode net_src; + struct kdfs_fullnetinode *net_src = kmalloc(sizeof(struct kdfs_fullnetinode), GFP_KERNEL); PRINT_FUNCTION_NAME; - res = rpc_unpack_type(desc, net_src); + res = rpc_unpack_type(desc, *net_src); /* import the inode part*/ - kdfs_import_kdfs_inode(inode_dst, &net_src); + kdfs_import_kdfs_inode(inode_dst, net_src); /* import the extents part */ - kdfs_file_extent_net_import(inode_dst, &net_src); + kdfs_file_extent_net_import(inode_dst, net_src); + kfree(net_src); PRINT_FUNCTION_EXIT; return res; } diff --git a/fs/kdfs/super.c b/fs/kdfs/super.c index 5021db6..9df0fea 100644 --- a/fs/kdfs/super.c +++ b/fs/kdfs/super.c @@ -1923,7 +1923,7 @@ int kdfs_iol_sb_export(struct rpc_desc *desc, struct kdfs_cw_sb *k_cw_sb = NULL; struct kdfs_super_block *k_sb = NULL; struct kdfs_generic_sb *kgsb = NULL; - struct kdfs_netsb net_dest; + struct kdfs_netsb *net_dest = kmalloc(sizeof (struct kdfs_netsb), GFP_KERNEL); int res = 0; PRINT_FUNCTION_NAME; @@ -1937,8 +1937,8 @@ int kdfs_iol_sb_export(struct rpc_desc *desc, if (kgsb->type == KDFS_INFO_TYPE_SB_BMP) { DEBUG(DBG_TRACE, "export cw sb\n"); k_cw_sb = (struct kdfs_cw_sb *) kgsb->real_sb; - __kdfs_export_kdfs_cwsb(&net_dest, k_cw_sb); - res = rpc_pack_type(desc, net_dest); + __kdfs_export_kdfs_cwsb(net_dest, k_cw_sb); + res = rpc_pack_type(desc, *net_dest); } else { k_sb = (struct kdfs_super_block*) kgsb->real_sb; DEBUG(DBG_TRACE, "export sb %d\n", k_sb->sb_nodeid); @@ -1957,10 +1957,11 @@ int kdfs_iol_sb_export(struct rpc_desc *desc, if (__kdfs_local_statfs(k_sb) != 0) DEBUG(DBG_ALERT, "Cannot retrieve the local stat for sb %id\n", k_sb->sb_nodeid); - __kdfs_export_kdfs_sb(&net_dest, k_sb); - res = rpc_pack_type(desc, net_dest); + __kdfs_export_kdfs_sb(net_dest, k_sb); + res = rpc_pack_type(desc, *net_dest); } + kfree(net_dest); PRINT_FUNCTION_EXIT; return res; } @@ -1983,22 +1984,22 @@ int kdfs_iol_sb_import (struct rpc_desc *desc, struct kdfs_generic_sb *kgsb = objEntry->object; struct kdfs_super_block *k_sb; struct kdfs_cw_sb *k_cw_sb; - struct kdfs_netsb net_src; + struct kdfs_netsb *net_src = kmalloc(sizeof (struct kdfs_netsb), GFP_KERNEL); PRINT_FUNCTION_NAME; - res = rpc_unpack_type(desc, net_src); + res = rpc_unpack_type(desc, *net_src); /* * TODO NOW, Adrien / Marko * We should be able to use objid (objEntry->objid ??) */ - if (net_src.info_type == KDFS_INFO_TYPE_SB_BMP) { + if (net_src->info_type == KDFS_INFO_TYPE_SB_BMP) { k_cw_sb = kgsb->real_sb; - __kdfs_import_kdfs_cwsb(k_cw_sb, &net_src); - } else if (net_src.info_type == KDFS_INFO_TYPE_SB) { + __kdfs_import_kdfs_cwsb(k_cw_sb, net_src); + } else if (net_src->info_type == KDFS_INFO_TYPE_SB) { k_sb = kgsb->real_sb; - __kdfs_import_kdfs_sb(k_sb, &net_src); + __kdfs_import_kdfs_sb(k_sb, net_src); /* Set to NULL all irrelevant pointer references */ /* @@ -2022,6 +2023,7 @@ int kdfs_iol_sb_import (struct rpc_desc *desc, } else DEBUG(DBG_PANIC, "Unknown object imported!\n"); + kfree(net_src); PRINT_FUNCTION_EXIT; return 0; } commit 5beec156ca83753b3f8d21dd882ae051db48859c Author: ad <leb...@fr...> Date: Sat Jan 8 17:24:02 2011 +0000 Fix a silly error for debugging traces diff --git a/fs/kdfs/TODO b/fs/kdfs/TODO index 7c69c75..579c18f 100644 --- a/fs/kdfs/TODO +++ b/fs/kdfs/TODO @@ -38,6 +38,8 @@ Prio. added added Type What 2 adrien 100717 Bugfix check why we locally destroy the content kddm set the inode is dropped by the VFS (cfs. super.c kdfs_drop_inode) 2 adrien 100819 ls -al upon a directory returns a wrong size (should be 4096, however the realsize of the directory is returned) +2 adrien 100819 ls -al upon a directory returns a wrong size (should be 4096, however the realsize of the directory is returned) +2 adrien 110106 Study directories/files deletions (why it is so long, some sets seem to be created why ? At the first sight, it should be avoided) DONE ~~~~ diff --git a/fs/kdfs/inode.c b/fs/kdfs/inode.c index 1848729..dcea0f8 100644 --- a/fs/kdfs/inode.c +++ b/fs/kdfs/inode.c @@ -1179,9 +1179,8 @@ int kdfs_iol_inode_insert_object(kddm_obj_t *objEntry, break; default: DEBUG(DBG_PANIC, - "Cannot set kdfs inode operations %o (ino %lu)\n", - k_inode->inode->i_mode & S_IFMT, k_inode->inode->i_ino); - DEBUG(DBG_PANIC, "filename %s\n", + "Cannot set kdfs inode operations %o (ino %lu, filename %s)\n", + k_inode->inode->i_mode & S_IFMT, k_inode->inode->i_ino, list_entry(k_inode->inode->i_dentry.next, struct dentry, d_alias)->d_name.name); break; } ----------------------------------------------------------------------- Summary of changes: fs/kdfs/TODO | 2 + fs/kdfs/common.h | 18 +++++---- fs/kdfs/file_extent.c | 4 +- fs/kdfs/file_extent.h | 4 +- fs/kdfs/inode.c | 92 +++++++++++++++++++++++++----------------------- fs/kdfs/super.c | 34 +++++++++-------- 6 files changed, 82 insertions(+), 72 deletions(-) hooks/post-receive -- kdfs |