* linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied @ 2010-06-11 15:13 Takeo Tung 2010-06-11 20:07 ` Michal Marek 0 siblings, 1 reply; 13+ messages in thread From: Takeo Tung @ 2010-06-11 15:13 UTC (permalink / raw) To: linux-kernel Dear All, I using linux-next-20100608 kernel, but if re-complier the kernel will found this messages. root@kernel-x86:/usr/src/linux# make oldconfig HOSTCC scripts/basic/fixdep /bin/sh: scripts/basic/fixdep: Permission denied make[1]: *** [scripts/basic/fixdep] Error 1 make: *** [scripts_basic] Error 2 But if I revert this patch, seems all back to normal, pls help me this is bug patch or need adjust some system config? http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commitdiff;h=9d9b938248736826e86db9b16a3b435bdb5d649f Thanks, Takeo Tung ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied 2010-06-11 15:13 linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied Takeo Tung @ 2010-06-11 20:07 ` Michal Marek 2010-06-12 8:44 ` Takeo Tung 0 siblings, 1 reply; 13+ messages in thread From: Michal Marek @ 2010-06-11 20:07 UTC (permalink / raw) To: Takeo Tung; +Cc: linux-kernel, Christoph Hellwig On 11.6.2010 17:13, Takeo Tung wrote: > Dear All, > > I using linux-next-20100608 kernel, but if re-complier the kernel will > found > this messages. > > root@kernel-x86:/usr/src/linux# make oldconfig > HOSTCC scripts/basic/fixdep > /bin/sh: scripts/basic/fixdep: Permission denied > make[1]: *** [scripts/basic/fixdep] Error 1 > make: *** [scripts_basic] Error 2 > > But if I revert this patch, seems all back to normal, pls help me this is > bug patch or need adjust some system config? > > http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commitdiff;h=9d9b938248736826e86db9b16a3b435bdb5d649f Do I understand it correctly that you can't rebuild your kernel if you're running linux-next-20100608 and that the problem goes away if you revert the above patch, recompile somewhere else and boot the new kernel? I.e. it's unlikely a problem with fixdep itself? Adding Christoph Hellwig to cc. Michal ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied 2010-06-11 20:07 ` Michal Marek @ 2010-06-12 8:44 ` Takeo Tung 2010-06-12 9:49 ` Christoph Hellwig 0 siblings, 1 reply; 13+ messages in thread From: Takeo Tung @ 2010-06-12 8:44 UTC (permalink / raw) To: Michal Marek; +Cc: linux-kernel, Christoph Hellwig, kernel Hello, yes. 1. I complier liux-next-20100608 kernel, and boot the linux-next-20100608 kernel, and try re-complier kernel, will found this message. /bin/sh: scripts/basic/fixdep: Permission denied 2. reboot other safe kernel, and revert the above patch, and complier it, and boot the new kernel, seems no this error. but I don't know why, bcoz seems code is ok. Thanks, Takeo Tung -------------------------------------------------- From: "Michal Marek" <mmarek@suse.cz> Sent: Saturday, June 12, 2010 4:07 AM To: "Takeo Tung" <kernel@takeo.idv.tw> Cc: <linux-kernel@vger.kernel.org>; "Christoph Hellwig" <hch@lst.de> Subject: Re: linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied > On 11.6.2010 17:13, Takeo Tung wrote: >> Dear All, >> >> I using linux-next-20100608 kernel, but if re-complier the kernel will >> found >> this messages. >> >> root@kernel-x86:/usr/src/linux# make oldconfig >> HOSTCC scripts/basic/fixdep >> /bin/sh: scripts/basic/fixdep: Permission denied >> make[1]: *** [scripts/basic/fixdep] Error 1 >> make: *** [scripts_basic] Error 2 >> >> But if I revert this patch, seems all back to normal, pls help me this is >> bug patch or need adjust some system config? >> >> http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commitdiff;h=9d9b938248736826e86db9b16a3b435bdb5d649f > > Do I understand it correctly that you can't rebuild your kernel if > you're running linux-next-20100608 and that the problem goes away if you > revert the above patch, recompile somewhere else and boot the new > kernel? I.e. it's unlikely a problem with fixdep itself? > > Adding Christoph Hellwig to cc. > > Michal > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied 2010-06-12 8:44 ` Takeo Tung @ 2010-06-12 9:49 ` Christoph Hellwig 2010-06-12 19:35 ` Takeo Tung 2010-06-28 10:52 ` block: unify flags for struct bio and struct request will kernel panic Takeo Tung 0 siblings, 2 replies; 13+ messages in thread From: Christoph Hellwig @ 2010-06-12 9:49 UTC (permalink / raw) To: Takeo Tung; +Cc: Michal Marek, linux-kernel, viro, sfr Please try the patch below, looks like I did a horrible messup in the last version of the patch: Index: linux-2.6/fs/attr.c =================================================================== --- linux-2.6.orig/fs/attr.c 2010-06-12 11:45:50.458003839 +0200 +++ linux-2.6/fs/attr.c 2010-06-12 11:45:59.103005305 +0200 @@ -34,7 +34,7 @@ int inode_change_ok(const struct inode * * First check size constraints. These can't be overriden using * ATTR_FORCE. */ - if (attr->ia_mode & ATTR_SIZE) { + if (ia_valid & ATTR_SIZE) { int error = inode_newsize_ok(inode, attr->ia_size); if (error) return error; ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied 2010-06-12 9:49 ` Christoph Hellwig @ 2010-06-12 19:35 ` Takeo Tung 2010-06-28 10:52 ` block: unify flags for struct bio and struct request will kernel panic Takeo Tung 1 sibling, 0 replies; 13+ messages in thread From: Takeo Tung @ 2010-06-12 19:35 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Michal Marek, linux-kernel, viro, sfr Hello, I was try this patch, seems all is normal now. thanks for your patch. Best Regards, Takeo Tung -------------------------------------------------- From: "Christoph Hellwig" <hch@lst.de> Sent: Saturday, June 12, 2010 5:49 PM To: "Takeo Tung" <kernel@takeo.idv.tw> Cc: "Michal Marek" <mmarek@suse.cz>; <linux-kernel@vger.kernel.org>; <viro@zeniv.linux.org.uk>; <sfr@canb.auug.org.au> Subject: Re: linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied > Please try the patch below, looks like I did a horrible messup in the > last version of the patch: > > > Index: linux-2.6/fs/attr.c > =================================================================== > --- linux-2.6.orig/fs/attr.c 2010-06-12 11:45:50.458003839 +0200 > +++ linux-2.6/fs/attr.c 2010-06-12 11:45:59.103005305 +0200 > @@ -34,7 +34,7 @@ int inode_change_ok(const struct inode * > * First check size constraints. These can't be overriden using > * ATTR_FORCE. > */ > - if (attr->ia_mode & ATTR_SIZE) { > + if (ia_valid & ATTR_SIZE) { > int error = inode_newsize_ok(inode, attr->ia_size); > if (error) > return error; > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* block: unify flags for struct bio and struct request will kernel panic 2010-06-12 9:49 ` Christoph Hellwig 2010-06-12 19:35 ` Takeo Tung @ 2010-06-28 10:52 ` Takeo Tung 2010-07-07 23:05 ` [PATCH] struct io panic on raid1 - " Takeo Tung 1 sibling, 1 reply; 13+ messages in thread From: Takeo Tung @ 2010-06-28 10:52 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Michal Marek, linux-kernel, viro, sfr, Takeo Tung Dear Christoph, As subject, I revert the patch, seems boot is normal, but apply the patch, kernel will panic on scsi_setup_fs_cmnd, could you can check this? bcoz I check long time, no found why kernel will panic. http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fnext%2Flinux-next.git;a=commitdiff_plain;h=74450be123b6f3cb480c358a056be398cce6aa6e Thanks, Takeo Tung ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] struct io panic on raid1 - Re: block: unify flags for struct bio and struct request will kernel panic 2010-06-28 10:52 ` block: unify flags for struct bio and struct request will kernel panic Takeo Tung @ 2010-07-07 23:05 ` Takeo Tung 2010-07-07 23:17 ` Christoph Hellwig 0 siblings, 1 reply; 13+ messages in thread From: Takeo Tung @ 2010-07-07 23:05 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Michal Marek, linux-kernel, viro, sfr, Takeo Tung Dear Christoph, I was check the patch again. I found the panic status haapen on Soft RAID 1. I review it. found some define using bool, so some like ( x & REQ_SYNC) only 0 or 1. so if bi_rw = rw | sync will bi_rw = rw | 0 or rw | 1. not rw | ( 1 << __REQ_SYNC). So I write a patch is fix it. seems normal now. could you review the patch or any comment? Thanks Takeo Tung Signed-off-by: Takeo Tung <kernel@takeo.idv.tw> -------- diff -urNp ./drivers/md/raid10.c.orig ./drivers/md/raid10.c --- ./drivers/md/raid10.c.orig 2010-07-07 19:24:12.000000000 +0800 +++ ./drivers/md/raid10.c 2010-07-07 19:24:36.000000000 +0800 @@ -799,7 +799,7 @@ static int make_request(mddev_t *mddev, int i; int chunk_sects = conf->chunk_mask + 1; const int rw = bio_data_dir(bio); - const bool do_sync = (bio->bi_rw & REQ_SYNC); + const unsigned long do_sync = (bio->bi_rw & REQ_SYNC); struct bio_list bl; unsigned long flags; mdk_rdev_t *blocked_rdev; @@ -1716,7 +1716,7 @@ static void raid10d(mddev_t *mddev) raid_end_bio_io(r10_bio); bio_put(bio); } else { - const bool do_sync = (r10_bio->master_bio->bi_rw & REQ_SYNC); + const unsigned long do_sync = (r10_bio->master_bio->bi_rw & REQ_SYNC); bio_put(bio); rdev = conf->mirrors[mirror].rdev; if (printk_ratelimit()) diff -urNp ./drivers/md/raid1.c.orig ./drivers/md/raid1.c --- ./drivers/md/raid1.c.orig 2010-07-07 19:21:45.000000000 +0800 +++ ./drivers/md/raid1.c 2010-07-07 19:24:10.000000000 +0800 @@ -787,8 +787,8 @@ static int make_request(mddev_t *mddev, struct bio_list bl; struct page **behind_pages = NULL; const int rw = bio_data_dir(bio); - const bool do_sync = (bio->bi_rw & REQ_SYNC); - bool do_barriers; + const unsigned long do_sync = (bio->bi_rw & REQ_SYNC); + unsigned long do_barriers; mdk_rdev_t *blocked_rdev; /* @@ -1640,7 +1640,7 @@ static void raid1d(mddev_t *mddev) * We already have a nr_pending reference on these rdevs. */ int i; - const bool do_sync = (r1_bio->master_bio->bi_rw & REQ_SYNC); + const unsigned long do_sync = (r1_bio->master_bio->bi_rw & REQ_SYNC); clear_bit(R1BIO_BarrierRetry, &r1_bio->state); clear_bit(R1BIO_Barrier, &r1_bio->state); for (i=0; i < conf->raid_disks; i++) @@ -1696,7 +1696,7 @@ static void raid1d(mddev_t *mddev) (unsigned long long)r1_bio->sector); raid_end_bio_io(r1_bio); } else { - const bool do_sync = r1_bio->master_bio->bi_rw & REQ_SYNC; + const unsigned long do_sync = r1_bio->master_bio->bi_rw & REQ_SYNC; r1_bio->bios[r1_bio->read_disk] = mddev->ro ? IO_BLOCKED : NULL; r1_bio->read_disk = disk; diff -urNp ./drivers/block/loop.c.orig ./drivers/block/loop.c --- ./drivers/block/loop.c.orig 2010-07-07 19:21:12.000000000 +0800 +++ ./drivers/block/loop.c 2010-07-07 19:21:23.000000000 +0800 @@ -476,7 +476,7 @@ static int do_bio_filebacked(struct loop pos = ((loff_t) bio->bi_sector << 9) + lo->lo_offset; if (bio_rw(bio) == WRITE) { - bool barrier = (bio->bi_rw & REQ_HARDBARRIER); + unsigned long barrier = (bio->bi_rw & REQ_HARDBARRIER); struct file *file = lo->lo_backing_file; if (barrier) { diff -urNp ./block/blk-core.c.orig ./block/blk-core.c --- ./block/blk-core.c.orig 2010-07-07 19:14:55.000000000 +0800 +++ ./block/blk-core.c 2010-07-07 19:27:20.000000000 +0800 @@ -1198,9 +1198,9 @@ static int __make_request(struct request int el_ret; unsigned int bytes = bio->bi_size; const unsigned short prio = bio_prio(bio); - const bool sync = (bio->bi_rw & REQ_SYNC); - const bool unplug = (bio->bi_rw & REQ_UNPLUG); - const unsigned int ff = bio->bi_rw & REQ_FAILFAST_MASK; + const unsigned long sync = (bio->bi_rw & REQ_SYNC); + const unsigned long unplug = (bio->bi_rw & REQ_UNPLUG); + const unsigned long ff = bio->bi_rw & REQ_FAILFAST_MASK; int rw_flags; if ((bio->bi_rw & REQ_HARDBARRIER) && @@ -1719,7 +1719,7 @@ EXPORT_SYMBOL_GPL(blk_insert_cloned_requ */ unsigned int blk_rq_err_bytes(const struct request *rq) { - unsigned int ff = rq->cmd_flags & REQ_FAILFAST_MASK; + unsigned long ff = rq->cmd_flags & REQ_FAILFAST_MASK; unsigned int bytes = 0; struct bio *bio; --------------------------- -------------------------------------------------- From: "Takeo Tung" <kernel@takeo.idv.tw> Sent: Monday, June 28, 2010 6:52 PM To: "Christoph Hellwig" <hch@lst.de> Cc: "Michal Marek" <mmarek@suse.cz>; <linux-kernel@vger.kernel.org>; <viro@zeniv.linux.org.uk>; <sfr@canb.auug.org.au>; "Takeo Tung" <kernel@takeo.idv.tw> Subject: block: unify flags for struct bio and struct request will kernel panic > Dear Christoph, > > As subject, I revert the patch, seems boot is normal, but apply the patch, > kernel will panic on scsi_setup_fs_cmnd, could you can check this? bcoz I > check long time, > no found why kernel will panic. > > http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fnext%2Flinux-next.git;a=commitdiff_plain;h=74450be123b6f3cb480c358a056be398cce6aa6e > > Thanks, > Takeo Tung > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] struct io panic on raid1 - Re: block: unify flags for struct bio and struct request will kernel panic 2010-07-07 23:05 ` [PATCH] struct io panic on raid1 - " Takeo Tung @ 2010-07-07 23:17 ` Christoph Hellwig 2010-07-07 23:48 ` Neil Brown 0 siblings, 1 reply; 13+ messages in thread From: Christoph Hellwig @ 2010-07-07 23:17 UTC (permalink / raw) To: Takeo Tung; +Cc: Christoph Hellwig, Michal Marek, linux-kernel, viro, sfr On Thu, Jul 08, 2010 at 07:05:39AM +0800, Takeo Tung wrote: > Dear Christoph, > > I was check the patch again. I found the panic status haapen on Soft RAID > 1. I review it. found some define using bool, so some like ( x & REQ_SYNC) > only 0 or 1. > so if bi_rw = rw | sync will bi_rw = rw | 0 or rw | 1. not rw | ( 1 << > __REQ_SYNC). > > So I write a patch is fix it. seems normal now. could you review the patch > or any comment? The patch looks correct to me, although your mailer mangled the whitespace badly. If Neil wants to keep the flag as bool we could also add a !! around the bit flag checks. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] struct io panic on raid1 - Re: block: unify flags for struct bio and struct request will kernel panic 2010-07-07 23:17 ` Christoph Hellwig @ 2010-07-07 23:48 ` Neil Brown 2010-07-08 0:43 ` Takeo Tung 0 siblings, 1 reply; 13+ messages in thread From: Neil Brown @ 2010-07-07 23:48 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Takeo Tung, Michal Marek, linux-kernel, viro, sfr On Thu, 8 Jul 2010 01:17:32 +0200 Christoph Hellwig <hch@lst.de> wrote: > On Thu, Jul 08, 2010 at 07:05:39AM +0800, Takeo Tung wrote: > > Dear Christoph, > > > > I was check the patch again. I found the panic status haapen on Soft RAID > > 1. I review it. found some define using bool, so some like ( x & REQ_SYNC) > > only 0 or 1. > > so if bi_rw = rw | sync will bi_rw = rw | 0 or rw | 1. not rw | ( 1 << > > __REQ_SYNC). > > > > So I write a patch is fix it. seems normal now. could you review the patch > > or any comment? > > The patch looks correct to me, although your mailer mangled the > whitespace badly. If Neil wants to keep the flag as bool we could > also add a !! around the bit flag checks. I think it is best to make them "unsigned long" holding the actual but. They were only made 'bool' because that is was bio_rw_flagged() returned. Converting to a bool then back to a bit-flag is unnecessary. Thanks, NeilBrown ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] struct io panic on raid1 - Re: block: unify flags for struct bio and struct request will kernel panic 2010-07-07 23:48 ` Neil Brown @ 2010-07-08 0:43 ` Takeo Tung 2010-07-08 1:15 ` Neil Brown 0 siblings, 1 reply; 13+ messages in thread From: Takeo Tung @ 2010-07-08 0:43 UTC (permalink / raw) To: Neil Brown, Christoph Hellwig Cc: Michal Marek, linux-kernel, viro, sfr, Takeo Tung [-- Attachment #1: Type: text/plain, Size: 34 bytes --] 3o,O MIME .f&!*: Multipart 6l%s!C [-- Attachment #2: Type: text/plain, Size: 1822 bytes --] Hello, ok. I rewrite the patch back to bool and re-add bio_rw_flagged fucntion. pls review it and any comment? Thanks, Takeo Tung -------------------------------------------------- From: "Neil Brown" <neilb@suse.de> Sent: Thursday, July 08, 2010 7:48 AM To: "Christoph Hellwig" <hch@lst.de> Cc: "Takeo Tung" <kernel@takeo.idv.tw>; "Michal Marek" <mmarek@suse.cz>; <linux-kernel@vger.kernel.org>; <viro@zeniv.linux.org.uk>; <sfr@canb.auug.org.au> Subject: Re: [PATCH] struct io panic on raid1 - Re: block: unify flags for struct bio and struct request will kernel panic > On Thu, 8 Jul 2010 01:17:32 +0200 > Christoph Hellwig <hch@lst.de> wrote: > >> On Thu, Jul 08, 2010 at 07:05:39AM +0800, Takeo Tung wrote: >> > Dear Christoph, >> > >> > I was check the patch again. I found the panic status haapen on Soft >> > RAID >> > 1. I review it. found some define using bool, so some like ( x & >> > REQ_SYNC) >> > only 0 or 1. >> > so if bi_rw = rw | sync will bi_rw = rw | 0 or rw | 1. not rw | ( 1 << >> > __REQ_SYNC). >> > >> > So I write a patch is fix it. seems normal now. could you review the >> > patch >> > or any comment? >> >> The patch looks correct to me, although your mailer mangled the >> whitespace badly. If Neil wants to keep the flag as bool we could >> also add a !! around the bit flag checks. > > I think it is best to make them "unsigned long" holding the actual but. > They were only made 'bool' because that is was bio_rw_flagged() returned. > Converting to a bool then back to a bit-flag is unnecessary. > > Thanks, > NeilBrown > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > > [-- Attachment #3: bio-blkdev-rev2.patch --] [-- Type: application/octet-stream, Size: 7940 bytes --] diff -urNp ./drivers/md/raid10.c.orig ./drivers/md/raid10.c --- ./drivers/md/raid10.c.orig 2010-07-07 19:24:12.000000000 +0800 +++ ./drivers/md/raid10.c 2010-07-08 08:35:19.000000000 +0800 @@ -799,7 +799,7 @@ static int make_request(mddev_t *mddev, int i; int chunk_sects = conf->chunk_mask + 1; const int rw = bio_data_dir(bio); - const bool do_sync = (bio->bi_rw & REQ_SYNC); + const bool do_sync = bio_rw_flagged(bio, REQ_SYNC); struct bio_list bl; unsigned long flags; mdk_rdev_t *blocked_rdev; @@ -879,7 +879,7 @@ static int make_request(mddev_t *mddev, mirror->rdev->data_offset; read_bio->bi_bdev = mirror->rdev->bdev; read_bio->bi_end_io = raid10_end_read_request; - read_bio->bi_rw = READ | do_sync; + read_bio->bi_rw = READ | (do_sync << __REQ_SYNC); read_bio->bi_private = r10_bio; generic_make_request(read_bio); @@ -947,7 +947,7 @@ static int make_request(mddev_t *mddev, conf->mirrors[d].rdev->data_offset; mbio->bi_bdev = conf->mirrors[d].rdev->bdev; mbio->bi_end_io = raid10_end_write_request; - mbio->bi_rw = WRITE | do_sync; + mbio->bi_rw = WRITE | (do_sync << __REQ_SYNC); mbio->bi_private = r10_bio; atomic_inc(&r10_bio->remaining); @@ -1716,7 +1716,7 @@ static void raid10d(mddev_t *mddev) raid_end_bio_io(r10_bio); bio_put(bio); } else { - const bool do_sync = (r10_bio->master_bio->bi_rw & REQ_SYNC); + const bool do_sync = bio_rw_flagged(r10_bio->master_bio, REQ_SYNC); bio_put(bio); rdev = conf->mirrors[mirror].rdev; if (printk_ratelimit()) @@ -1730,7 +1730,7 @@ static void raid10d(mddev_t *mddev) bio->bi_sector = r10_bio->devs[r10_bio->read_slot].addr + rdev->data_offset; bio->bi_bdev = rdev->bdev; - bio->bi_rw = READ | do_sync; + bio->bi_rw = READ | (do_sync << __REQ_SYNC); bio->bi_private = r10_bio; bio->bi_end_io = raid10_end_read_request; unplug = 1; diff -urNp ./drivers/md/raid1.c.orig ./drivers/md/raid1.c --- ./drivers/md/raid1.c.orig 2010-07-07 19:21:45.000000000 +0800 +++ ./drivers/md/raid1.c 2010-07-08 08:37:08.000000000 +0800 @@ -787,7 +787,7 @@ static int make_request(mddev_t *mddev, struct bio_list bl; struct page **behind_pages = NULL; const int rw = bio_data_dir(bio); - const bool do_sync = (bio->bi_rw & REQ_SYNC); + const bool do_sync = bio_rw_flagged(bio, REQ_SYNC); bool do_barriers; mdk_rdev_t *blocked_rdev; @@ -877,7 +877,7 @@ static int make_request(mddev_t *mddev, read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset; read_bio->bi_bdev = mirror->rdev->bdev; read_bio->bi_end_io = raid1_end_read_request; - read_bio->bi_rw = READ | do_sync; + read_bio->bi_rw = READ | (do_sync << __REQ_SYNC); read_bio->bi_private = r1_bio; generic_make_request(read_bio); @@ -959,7 +959,7 @@ static int make_request(mddev_t *mddev, atomic_set(&r1_bio->remaining, 0); atomic_set(&r1_bio->behind_remaining, 0); - do_barriers = bio->bi_rw & REQ_HARDBARRIER; + do_barriers = bio_rw_flagged(bio, REQ_HARDBARRIER); if (do_barriers) set_bit(R1BIO_Barrier, &r1_bio->state); @@ -975,7 +975,7 @@ static int make_request(mddev_t *mddev, mbio->bi_sector = r1_bio->sector + conf->mirrors[i].rdev->data_offset; mbio->bi_bdev = conf->mirrors[i].rdev->bdev; mbio->bi_end_io = raid1_end_write_request; - mbio->bi_rw = WRITE | do_barriers | do_sync; + mbio->bi_rw = WRITE | (do_barriers << __REQ_HARDBARRIER) | (do_sync << __REQ_SYNC); mbio->bi_private = r1_bio; if (behind_pages) { @@ -1640,7 +1640,7 @@ static void raid1d(mddev_t *mddev) * We already have a nr_pending reference on these rdevs. */ int i; - const bool do_sync = (r1_bio->master_bio->bi_rw & REQ_SYNC); + const bool do_sync = bio_rw_flagged(r1_bio->master_bio, REQ_SYNC); clear_bit(R1BIO_BarrierRetry, &r1_bio->state); clear_bit(R1BIO_Barrier, &r1_bio->state); for (i=0; i < conf->raid_disks; i++) @@ -1661,7 +1661,7 @@ static void raid1d(mddev_t *mddev) conf->mirrors[i].rdev->data_offset; bio->bi_bdev = conf->mirrors[i].rdev->bdev; bio->bi_end_io = raid1_end_write_request; - bio->bi_rw = WRITE | do_sync; + bio->bi_rw = WRITE | (do_sync << __REQ_SYNC); bio->bi_private = r1_bio; r1_bio->bios[i] = bio; generic_make_request(bio); @@ -1696,7 +1696,7 @@ static void raid1d(mddev_t *mddev) (unsigned long long)r1_bio->sector); raid_end_bio_io(r1_bio); } else { - const bool do_sync = r1_bio->master_bio->bi_rw & REQ_SYNC; + const bool do_sync = bio_rw_flagged(r1_bio->master_bio, REQ_SYNC); r1_bio->bios[r1_bio->read_disk] = mddev->ro ? IO_BLOCKED : NULL; r1_bio->read_disk = disk; @@ -1713,7 +1713,7 @@ static void raid1d(mddev_t *mddev) bio->bi_sector = r1_bio->sector + rdev->data_offset; bio->bi_bdev = rdev->bdev; bio->bi_end_io = raid1_end_read_request; - bio->bi_rw = READ | do_sync; + bio->bi_rw = READ | (do_sync << __REQ_SYNC); bio->bi_private = r1_bio; unplug = 1; generic_make_request(bio); diff -urNp ./drivers/block/loop.c.orig ./drivers/block/loop.c --- ./drivers/block/loop.c.orig 2010-07-07 19:21:12.000000000 +0800 +++ ./drivers/block/loop.c 2010-07-08 08:38:06.000000000 +0800 @@ -476,7 +476,7 @@ static int do_bio_filebacked(struct loop pos = ((loff_t) bio->bi_sector << 9) + lo->lo_offset; if (bio_rw(bio) == WRITE) { - bool barrier = (bio->bi_rw & REQ_HARDBARRIER); + bool barrier = bio_rw_flagged(bio, REQ_HARDBARRIER); struct file *file = lo->lo_backing_file; if (barrier) { diff -urNp ./block/blk-core.c.orig ./block/blk-core.c --- ./block/blk-core.c.orig 2010-07-07 19:14:55.000000000 +0800 +++ ./block/blk-core.c 2010-07-08 08:39:10.000000000 +0800 @@ -174,7 +174,7 @@ void blk_dump_rq_flags(struct request *r { int bit; - printk(KERN_INFO "%s: dev %s: type=%x, flags=%x\n", msg, + printk(KERN_INFO "%s: dev %s: type=%x, flags=%lx\n", msg, rq->rq_disk ? rq->rq_disk->disk_name : "?", rq->cmd_type, rq->cmd_flags); @@ -1198,9 +1198,9 @@ static int __make_request(struct request int el_ret; unsigned int bytes = bio->bi_size; const unsigned short prio = bio_prio(bio); - const bool sync = (bio->bi_rw & REQ_SYNC); - const bool unplug = (bio->bi_rw & REQ_UNPLUG); - const unsigned int ff = bio->bi_rw & REQ_FAILFAST_MASK; + const bool sync = bio_rw_flagged(bio, REQ_SYNC); + const bool unplug = bio_rw_flagged(bio, REQ_UNPLUG); + const unsigned long ff = bio->bi_rw & REQ_FAILFAST_MASK; int rw_flags; if ((bio->bi_rw & REQ_HARDBARRIER) && @@ -1719,7 +1719,7 @@ EXPORT_SYMBOL_GPL(blk_insert_cloned_requ */ unsigned int blk_rq_err_bytes(const struct request *rq) { - unsigned int ff = rq->cmd_flags & REQ_FAILFAST_MASK; + unsigned long ff = rq->cmd_flags & REQ_FAILFAST_MASK; unsigned int bytes = 0; struct bio *bio; diff -urNp ./include/linux/blkdev.h.orig ./include/linux/blkdev.h --- ./include/linux/blkdev.h.orig 2010-07-08 07:54:51.000000000 +0800 +++ ./include/linux/blkdev.h 2010-07-08 07:55:30.000000000 +0800 @@ -97,7 +97,7 @@ struct request { struct request_queue *q; - unsigned int cmd_flags; + unsigned long cmd_flags; enum rq_cmd_type_bits cmd_type; unsigned long atomic_flags; diff -urNp ./include/linux/bio.h.orig ./include/linux/bio.h --- ./include/linux/bio.h.orig 2010-07-08 08:32:53.000000000 +0800 +++ ./include/linux/bio.h 2010-07-08 08:32:17.000000000 +0800 @@ -218,6 +218,11 @@ enum rq_flag_bits { #define REQ_IO_STAT (1 << __REQ_IO_STAT) #define REQ_MIXED_MERGE (1 << __REQ_MIXED_MERGE) +static inline bool bio_rw_flagged(struct bio *bio, unsigned long flag) +{ + return (bio->bi_rw & flag) != 0; +} + /* * upper 16 bits of bi_rw define the io priority of this bio */ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] struct io panic on raid1 - Re: block: unify flags for struct bio and struct request will kernel panic 2010-07-08 0:43 ` Takeo Tung @ 2010-07-08 1:15 ` Neil Brown 2010-07-08 1:42 ` Takeo Tung 0 siblings, 1 reply; 13+ messages in thread From: Neil Brown @ 2010-07-08 1:15 UTC (permalink / raw) To: Takeo Tung; +Cc: Christoph Hellwig, Michal Marek, linux-kernel, viro, sfr On Thu, 8 Jul 2010 08:43:38 +0800 "Takeo Tung" <kernel@takeo.idv.tw> wrote: > Hello, > > ok. I rewrite the patch back to bool and re-add bio_rw_flagged fucntion. pls > review it and any comment? I'm not sure why you did that. I meant to say that I liked the fact that you had changed from 'bool' to 'unsigned long' and that I thought using 'bool' was unnecessary. Maybe I didn't say that very clearly. It doesn't matter to me particularly which approach is used, but please don't re-introduce bio_rw_flagged because you think I want it - I don't. Thanks, NeilBrown > > Thanks, > Takeo Tung > > -------------------------------------------------- > From: "Neil Brown" <neilb@suse.de> > Sent: Thursday, July 08, 2010 7:48 AM > To: "Christoph Hellwig" <hch@lst.de> > Cc: "Takeo Tung" <kernel@takeo.idv.tw>; "Michal Marek" <mmarek@suse.cz>; > <linux-kernel@vger.kernel.org>; <viro@zeniv.linux.org.uk>; > <sfr@canb.auug.org.au> > Subject: Re: [PATCH] struct io panic on raid1 - Re: block: unify flags for > struct bio and struct request will kernel panic > > > On Thu, 8 Jul 2010 01:17:32 +0200 > > Christoph Hellwig <hch@lst.de> wrote: > > > >> On Thu, Jul 08, 2010 at 07:05:39AM +0800, Takeo Tung wrote: > >> > Dear Christoph, > >> > > >> > I was check the patch again. I found the panic status haapen on Soft > >> > RAID > >> > 1. I review it. found some define using bool, so some like ( x & > >> > REQ_SYNC) > >> > only 0 or 1. > >> > so if bi_rw = rw | sync will bi_rw = rw | 0 or rw | 1. not rw | ( 1 << > >> > __REQ_SYNC). > >> > > >> > So I write a patch is fix it. seems normal now. could you review the > >> > patch > >> > or any comment? > >> > >> The patch looks correct to me, although your mailer mangled the > >> whitespace badly. If Neil wants to keep the flag as bool we could > >> also add a !! around the bit flag checks. > > > > I think it is best to make them "unsigned long" holding the actual but. > > They were only made 'bool' because that is was bio_rw_flagged() returned. > > Converting to a bool then back to a bit-flag is unnecessary. > > > > Thanks, > > NeilBrown > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > Please read the FAQ at http://www.tux.org/lkml/ > > > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] struct io panic on raid1 - Re: block: unify flags for struct bio and struct request will kernel panic 2010-07-08 1:15 ` Neil Brown @ 2010-07-08 1:42 ` Takeo Tung 0 siblings, 0 replies; 13+ messages in thread From: Takeo Tung @ 2010-07-08 1:42 UTC (permalink / raw) To: Neil Brown; +Cc: Christoph Hellwig, Michal Marek, linux-kernel, viro, sfr Dear Neil, Ok. bcoz I don't sure you like define is 'bool' or 'unsigned long', if using 'unsigned long', I no problem now. sorry for my poor english. Thanks, Takeo Tung -------------------------------------------------- From: "Neil Brown" <neilb@suse.de> Sent: Thursday, July 08, 2010 9:15 AM To: "Takeo Tung" <kernel@takeo.idv.tw> Cc: "Christoph Hellwig" <hch@lst.de>; "Michal Marek" <mmarek@suse.cz>; <linux-kernel@vger.kernel.org>; <viro@zeniv.linux.org.uk>; <sfr@canb.auug.org.au> Subject: Re: [PATCH] struct io panic on raid1 - Re: block: unify flags for struct bio and struct request will kernel panic > On Thu, 8 Jul 2010 08:43:38 +0800 > "Takeo Tung" <kernel@takeo.idv.tw> wrote: > >> Hello, >> >> ok. I rewrite the patch back to bool and re-add bio_rw_flagged fucntion. >> pls >> review it and any comment? > > I'm not sure why you did that. > I meant to say that I liked the fact that you had changed from 'bool' to > 'unsigned long' and that I thought using 'bool' was unnecessary. Maybe I > didn't say that very clearly. > > It doesn't matter to me particularly which approach is used, but please > don't > re-introduce bio_rw_flagged because you think I want it - I don't. > > Thanks, > NeilBrown > >> >> Thanks, >> Takeo Tung >> >> -------------------------------------------------- >> From: "Neil Brown" <neilb@suse.de> >> Sent: Thursday, July 08, 2010 7:48 AM >> To: "Christoph Hellwig" <hch@lst.de> >> Cc: "Takeo Tung" <kernel@takeo.idv.tw>; "Michal Marek" <mmarek@suse.cz>; >> <linux-kernel@vger.kernel.org>; <viro@zeniv.linux.org.uk>; >> <sfr@canb.auug.org.au> >> Subject: Re: [PATCH] struct io panic on raid1 - Re: block: unify flags >> for >> struct bio and struct request will kernel panic >> >> > On Thu, 8 Jul 2010 01:17:32 +0200 >> > Christoph Hellwig <hch@lst.de> wrote: >> > >> >> On Thu, Jul 08, 2010 at 07:05:39AM +0800, Takeo Tung wrote: >> >> > Dear Christoph, >> >> > >> >> > I was check the patch again. I found the panic status haapen on Soft >> >> > RAID >> >> > 1. I review it. found some define using bool, so some like ( x & >> >> > REQ_SYNC) >> >> > only 0 or 1. >> >> > so if bi_rw = rw | sync will bi_rw = rw | 0 or rw | 1. not rw | ( 1 >> >> > << >> >> > __REQ_SYNC). >> >> > >> >> > So I write a patch is fix it. seems normal now. could you review the >> >> > patch >> >> > or any comment? >> >> >> >> The patch looks correct to me, although your mailer mangled the >> >> whitespace badly. If Neil wants to keep the flag as bool we could >> >> also add a !! around the bit flag checks. >> > >> > I think it is best to make them "unsigned long" holding the actual but. >> > They were only made 'bool' because that is was bio_rw_flagged() >> > returned. >> > Converting to a bool then back to a bit-flag is unnecessary. >> > >> > Thanks, >> > NeilBrown >> > -- >> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" >> > in >> > the body of a message to majordomo@vger.kernel.org >> > More majordomo info at http://vger.kernel.org/majordomo-info.html >> > Please read the FAQ at http://www.tux.org/lkml/ >> > >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied @ 2010-06-11 15:04 Takeo Tung 0 siblings, 0 replies; 13+ messages in thread From: Takeo Tung @ 2010-06-11 15:04 UTC (permalink / raw) To: linux-kernel Dear All, I using linux-next-20100608 kernel, but if re-complier the kernel will found this messages. root@kernel-x86:/usr/src/linux# make oldconfig HOSTCC scripts/basic/fixdep /bin/sh: scripts/basic/fixdep: Permission denied make[1]: *** [scripts/basic/fixdep] Error 1 make: *** [scripts_basic] Error 2 But if I revert this patch, seems all back to normal, pls help me this is bug patch or need adjust some system config? http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commitdiff;h=9d9b938248736826e86db9b16a3b435bdb5d649f Thanks, Takeo Tung ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2010-07-08 1:42 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-06-11 15:13 linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied Takeo Tung 2010-06-11 20:07 ` Michal Marek 2010-06-12 8:44 ` Takeo Tung 2010-06-12 9:49 ` Christoph Hellwig 2010-06-12 19:35 ` Takeo Tung 2010-06-28 10:52 ` block: unify flags for struct bio and struct request will kernel panic Takeo Tung 2010-07-07 23:05 ` [PATCH] struct io panic on raid1 - " Takeo Tung 2010-07-07 23:17 ` Christoph Hellwig 2010-07-07 23:48 ` Neil Brown 2010-07-08 0:43 ` Takeo Tung 2010-07-08 1:15 ` Neil Brown 2010-07-08 1:42 ` Takeo Tung -- strict thread matches above, loose matches on Subject: below -- 2010-06-11 15:04 linux-next-20100608 will /bin/sh: scripts/basic/fixdep: Permission denied Takeo Tung
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.