FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu Kernel Team

 
 
LinkBack Thread Tools
 
Old 12-24-2008, 03:10 PM
Jim Lieb
 
Default UBUNTU: ubuntu: Add dm-raid4-5 driver -- port to 2.6.28

How does this fit in with the lockless changes in .27? Are we re-introducing
some locking where it is not used elsewhere?

On Wednesday 24 December 2008 02:53:36 Andy Whitcroft wrote:
> Bug: #309378
>
> The dm-raid4-5 driver was disabled as it did not cleanly compile when
> rebased to 2.6.28. This was due to two errors:
>
> 1) the removal of {set,clear}_page_locked() as the atomic versions were
> no longer used elsewhere in the kernel, and
> 2) the array_too_big() function was renamed to dm_array_too_big() to
> allow it to be exported.
>
> As raid is a highly critical subsystem I have taken the safest possible
> approach and assumed that RAID does require the atomic flag modifiers.
> This patch therefore reinstates {set,clear}_page_locked() and moves the
> code to using the new dm_array_too_big() interface. Finally it reenabled
> the raid support.
>
> I have deliberatly re-introduced {set,clear}_page_locked() into the
> original headers next to their corresponding unlocked form such that
> should those change again we will conflict and detect the change.
>
> Signed-off-by: Andy Whitcroft <apw@canonical.com>
> ---
> include/linux/pagemap.h | 8 ++++++++
> ubuntu/dm-raid4-5/Makefile | 2 +-
> ubuntu/dm-raid4-5/dm-raid4-5.c | 2 +-
> 3 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
> index 709742b..f09e3b2 100644
> --- a/include/linux/pagemap.h
> +++ b/include/linux/pagemap.h
> @@ -303,11 +303,19 @@ static inline void __set_page_locked(struct page
> *page) {
> __set_bit(PG_locked, &page->flags);
> }
> +static inline void set_page_locked(struct page *page)
> +{
> + set_bit(PG_locked, &page->flags);
> +}
>
> static inline void __clear_page_locked(struct page *page)
> {
> __clear_bit(PG_locked, &page->flags);
> }
> +static inline void clear_page_locked(struct page *page)
> +{
> + clear_bit(PG_locked, &page->flags);
> +}
>
> static inline int trylock_page(struct page *page)
> {
> diff --git a/ubuntu/dm-raid4-5/Makefile b/ubuntu/dm-raid4-5/Makefile
> index b33ce8d..3a7e2fb 100644
> --- a/ubuntu/dm-raid4-5/Makefile
> +++ b/ubuntu/dm-raid4-5/Makefile
> @@ -1,3 +1,3 @@
> EXTRA_CFLAGS += -I$(srctree)/drivers/md
>
> -#obj-$(CONFIG_DM_RAID45) += dm-raid4-5.o dm-mem-cache.o dm-region_hash.o
> dm-message.o +obj-$(CONFIG_DM_RAID45) += dm-raid4-5.o dm-mem-cache.o
> dm-region_hash.o dm-message.o diff --git a/ubuntu/dm-raid4-5/dm-raid4-5.c
> b/ubuntu/dm-raid4-5/dm-raid4-5.c index 156a219..73dc5e2 100644
> --- a/ubuntu/dm-raid4-5/dm-raid4-5.c
> +++ b/ubuntu/dm-raid4-5/dm-raid4-5.c
> @@ -3296,7 +3296,7 @@ context_alloc(struct raid_set **raid_set, struct
> raid_type *raid_type,
>
> /* Size and allocate the RAID set structure. */
> len = sizeof(*rs->data) + sizeof(*rs->dev);
> - if (array_too_big(sizeof(*rs), len, raid_devs))
> + if (dm_array_too_big(sizeof(*rs), len, raid_devs))
> goto bad_array;
>
> len = sizeof(*rs) + raid_devs * len;
> --
> 1.6.0.4.911.gc990

--
Jim Lieb
Ubuntu Kernel Team
Canonical Ltd.

--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 

Thread Tools




All times are GMT. The time now is 04:11 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org