diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-17 13:55:51 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-17 13:55:51 -0400 |
| commit | 5b664cb235e97afbf34db9c4d77f08ebd725335e (patch) | |
| tree | 518540649c38342209790de8e0b575ac1a6fa722 | |
| parent | f39548a6ad1dbdfaab552419386ec5bb1d76fa0d (diff) | |
| parent | c0420ad2ca514551ca086510b0e7d17a05c70492 (diff) | |
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2:
[PATCH] ocfs2: fix oops in mmap_truncate testing
configfs: call drop_link() to cleanup after create_link() failure
configfs: Allow ->make_item() and ->make_group() to return detailed errors.
configfs: Fix failing mkdir() making racing rmdir() fail
configfs: Fix deadlock with racing rmdir() and rename()
configfs: Make configfs_new_dirent() return error code instead of NULL
configfs: Protect configfs_dirent s_links list mutations
configfs: Introduce configfs_dirent_lock
ocfs2: Don't snprintf() without a format.
ocfs2: Fix CONFIG_OCFS2_DEBUG_FS #ifdefs
ocfs2/net: Silence build warnings on sparc64
ocfs2: Handle error during journal load
ocfs2: Silence an error message in ocfs2_file_aio_read()
ocfs2: use simple_read_from_buffer()
ocfs2: fix printk format warnings with OCFS2_FS_STATS=n
[PATCH 2/2] ocfs2: Instrument fs cluster locks
[PATCH 1/2] ocfs2: Add CONFIG_OCFS2_FS_STATS config option
| -rw-r--r-- | Documentation/filesystems/configfs/configfs.txt | 10 | ||||
| -rw-r--r-- | Documentation/filesystems/configfs/configfs_example.c | 14 | ||||
| -rw-r--r-- | drivers/net/netconsole.c | 10 | ||||
| -rw-r--r-- | fs/Kconfig | 8 | ||||
| -rw-r--r-- | fs/configfs/configfs_internal.h | 4 | ||||
| -rw-r--r-- | fs/configfs/dir.c | 147 | ||||
| -rw-r--r-- | fs/configfs/inode.c | 2 | ||||
| -rw-r--r-- | fs/configfs/symlink.c | 16 | ||||
| -rw-r--r-- | fs/dlm/config.c | 45 | ||||
| -rw-r--r-- | fs/ocfs2/aops.c | 13 | ||||
| -rw-r--r-- | fs/ocfs2/cluster/heartbeat.c | 17 | ||||
| -rw-r--r-- | fs/ocfs2/cluster/netdebug.c | 8 | ||||
| -rw-r--r-- | fs/ocfs2/cluster/nodemanager.c | 45 | ||||
| -rw-r--r-- | fs/ocfs2/dlmglue.c | 122 | ||||
| -rw-r--r-- | fs/ocfs2/file.c | 2 | ||||
| -rw-r--r-- | fs/ocfs2/journal.c | 2 | ||||
| -rw-r--r-- | fs/ocfs2/localalloc.c | 2 | ||||
| -rw-r--r-- | fs/ocfs2/ocfs2.h | 12 | ||||
| -rw-r--r-- | fs/ocfs2/ocfs2_fs.h | 2 | ||||
| -rw-r--r-- | fs/ocfs2/stack_user.c | 19 | ||||
| -rw-r--r-- | fs/ocfs2/super.c | 6 | ||||
| -rw-r--r-- | include/linux/configfs.h | 4 |
22 files changed, 383 insertions, 127 deletions
diff --git a/Documentation/filesystems/configfs/configfs.txt b/Documentation/filesystems/configfs/configfs.txt index 44c97e6accb2..15838d706ea2 100644 --- a/Documentation/filesystems/configfs/configfs.txt +++ b/Documentation/filesystems/configfs/configfs.txt | |||
| @@ -233,10 +233,12 @@ accomplished via the group operations specified on the group's | |||
| 233 | config_item_type. | 233 | config_item_type. |
| 234 | 234 | ||
| 235 | struct configfs_group_operations { | 235 | struct configfs_group_operations { |
| 236 | struct config_item *(*make_item)(struct config_group *group, | 236 | int (*make_item)(struct config_group *group, |
| 237 | const char *name); | 237 | const char *name, |
| 238 | struct config_group *(*make_group)(struct config_group *group, | 238 | struct config_item **new_item); |
| 239 | const char *name); | 239 | int (*make_group)(struct config_group *group, |
| 240 | const char *name, | ||
| 241 | struct config_group **new_group); | ||
| 240 | int (*commit_item)(struct config_item *item); | 242 | int (*commit_item)(struct config_item *item); |
| 241 | void (*disconnect_notify)(struct config_group *group, | 243 | void (*disconnect_notify)(struct config_group *group, |
| 242 | struct config_item *item); | 244 | struct config_item *item); |
diff --git a/Documentation/filesystems/configfs/configfs_example.c b/Documentation/filesystems/configfs/configfs_example.c index 25151fd5c2c6..0b422acd470c 100644 --- a/Documentation/filesystems/configfs/configfs_example.c +++ b/Documentation/filesystems/configfs/configfs_example.c | |||
| @@ -273,13 +273,13 @@ static inline struct simple_children *to_simple_children(struct config_item *ite | |||
| 273 | return item ? container_of(to_config_group(item), struct simple_children, group) : NULL; | 273 | return item ? container_of(to_config_group(item), struct simple_children, group) : NULL; |
| 274 | } | 274 | } |
| 275 | 275 | ||
| 276 | static struct config_item *simple_children_make_item(struct config_group *group, const char *name) | 276 | static int simple_children_make_item(struct config_group *group, const char *name, struct config_item **new_item) |
| 277 | { | 277 | { |
| 278 | struct simple_child *simple_child; | 278 | struct simple_child *simple_child; |
| 279 | 279 | ||
| 280 | simple_child = kzalloc(sizeof(struct simple_child), GFP_KERNEL); | 280 | simple_child = kzalloc(sizeof(struct simple_child), GFP_KERNEL); |
| 281 | if (!simple_child) | 281 | if (!simple_child) |
| 282 | return NULL; | 282 | return -ENOMEM; |
| 283 | 283 | ||
| 284 | 284 | ||
| 285 | config_item_init_type_name(&simple_child->item, name, | 285 | config_item_init_type_name(&simple_child->item, name, |
| @@ -287,7 +287,8 @@ static struct config_item *simple_children_make_item(struct config_group *group, | |||
| 287 | 287 | ||
| 288 | simple_child->storeme = 0; | 288 | simple_child->storeme = 0; |
| 289 | 289 | ||
| 290 | return &simple_child->item; | 290 | *new_item = &simple_child->item; |
| 291 | return 0; | ||
| 291 | } | 292 | } |
| 292 | 293 | ||
| 293 | static struct configfs_attribute simple_children_attr_description = { | 294 | static struct configfs_attribute simple_children_attr_description = { |
| @@ -359,20 +360,21 @@ static struct configfs_subsystem simple_children_subsys = { | |||
| 359 | * children of its own. | 360 | * children of its own. |
| 360 | */ | 361 | */ |
| 361 | 362 | ||
| 362 | static struct config_group *group_children_make_group(struct config_group *group, const char *name) | 363 | static int group_children_make_group(struct config_group *group, const char *name, struct config_group **new_group) |
| 363 | { | 364 | { |
| 364 | struct simple_children *simple_children; | 365 | struct simple_children *simple_children; |
| 365 | 366 | ||
| 366 | simple_children = kzalloc(sizeof(struct simple_children), | 367 | simple_children = kzalloc(sizeof(struct simple_children), |
| 367 | GFP_KERNEL); | 368 | GFP_KERNEL); |
| 368 | if (!simple_children) | 369 | if (!simple_children) |
| 369 | return NULL; | 370 | return -ENOMEM; |
| 370 | 371 | ||
| 371 | 372 | ||
| 372 | config_group_init_type_name(&simple_children->group, name, | 373 | config_group_init_type_name(&simple_children->group, name, |
| 373 | &simple_children_type); | 374 | &simple_children_type); |
| 374 | 375 | ||
| 375 | return &simple_children->group; | 376 | *new_group = &simple_children->group; |
| 377 | return 0; | ||
| 376 | } | 378 | } |
| 377 | 379 | ||
| 378 | static struct configfs_attribute group_children_attr_description = { | 380 | static struct configfs_attribute group_children_attr_description = { |
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 665341e43055..387a13395015 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c | |||
| @@ -585,8 +585,9 @@ static struct config_item_type netconsole_target_type = { | |||
| 585 | * Group operations and type for netconsole_subsys. | 585 | * Group operations and type for netconsole_subsys. |
| 586 | */ | 586 | */ |
| 587 | 587 | ||
| 588 | static struct config_item *make_netconsole_target(struct config_group *group, | 588 | static int make_netconsole_target(struct config_group *group, |
| 589 | const char *name) | 589 | const char *name, |
| 590 | struct config_item **new_item) | ||
| 590 | { | 591 | { |
| 591 | unsigned long flags; | 592 | unsigned long flags; |
| 592 | struct netconsole_target *nt; | 593 | struct netconsole_target *nt; |
| @@ -598,7 +599,7 @@ static struct config_item *make_netconsole_target(struct config_group *group, | |||
| 598 | nt = kzalloc(sizeof(*nt), GFP_KERNEL); | 599 | nt = kzalloc(sizeof(*nt), GFP_KERNEL); |
| 599 | if (!nt) { | 600 | if (!nt) { |
| 600 | printk(KERN_ERR "netconsole: failed to allocate memory\n"); | 601 | printk(KERN_ERR "netconsole: failed to allocate memory\n"); |
| 601 | return NULL; | 602 | return -ENOMEM; |
| 602 | } | 603 | } |
| 603 | 604 | ||
| 604 | nt->np.name = "netconsole"; | 605 | nt->np.name = "netconsole"; |
| @@ -615,7 +616,8 @@ static struct config_item *make_netconsole_target(struct config_group *group, | |||
| 615 | list_add(&nt->list, &target_list); | 616 | list_add(&nt->list, &target_list); |
| 616 | spin_unlock_irqrestore(&target_list_lock, flags); | 617 | spin_unlock_irqrestore(&target_list_lock, flags); |
| 617 | 618 | ||
| 618 | return &nt->item; | 619 | *new_item = &nt->item; |
| 620 | return 0; | ||
| 619 | } | 621 | } |
| 620 | 622 | ||
| 621 | static void drop_netconsole_target(struct config_group *group, | 623 | static void drop_netconsole_target(struct config_group *group, |
diff --git a/fs/Kconfig b/fs/Kconfig index 17216ba99c85..37db79a2ff95 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
| @@ -470,6 +470,14 @@ config OCFS2_FS_USERSPACE_CLUSTER | |||
| 470 | It is safe to say Y, as the clustering method is run-time | 470 | It is safe to say Y, as the clustering method is run-time |
| 471 | selectable. | 471 | selectable. |
| 472 | 472 | ||
| 473 | config OCFS2_FS_STATS | ||
| 474 | bool "OCFS2 statistics" | ||
| 475 | depends on OCFS2_FS | ||
| 476 | default y | ||
| 477 | help | ||
| 478 | This option allows some fs statistics to be captured. Enabling | ||
| 479 | this option may increase the memory consumption. | ||
| 480 | |||
| 473 | config OCFS2_DEBUG_MASKLOG | 481 | config OCFS2_DEBUG_MASKLOG |
| 474 | bool "OCFS2 logging support" | 482 | bool "OCFS2 logging support" |
| 475 | depends on OCFS2_FS | 483 | |
