do { ITERATE_RDEV(mddev, rdev, tmp) if (rdev->in_sync && !rdev->faulty) goto found; return ERR_PTR(-EIO); 
static struct page *read_sb_page(mddev_t *mddev, long offset, unsigned long index){	/* choose a good rdev and read the page from there */	mdk_rdev_t *rdev;	struct list_head *tmp;	struct page *page = alloc_page(GFP_KERNEL);	sector_t target;	if (!page)		return ERR_PTR(-ENOMEM);	do {		ITERATE_RDEV(mddev, rdev, tmp)			if (rdev->in_sync && !rdev->faulty)				goto found;		return ERR_PTR(-EIO);	found:		target = (rdev->sb_offset << 1) + offset + index * (PAGE_SIZE/512);	} while (!sync_page_io(rdev->bdev, target, PAGE_SIZE, page, READ));	page->index = index;	return page;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ab904d634625ef8dc590240b7ee06c7b724e636b/bitmap.c/clean/drivers/md/bitmap.c