brw_page urgent help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hi

can anybody help me why this module does not work properly.
  i m  trying to save content of ram by brw_page. for that i 've passed addr of page desc[0] say ,array of logical block as sar_zones with 0th element as any block no from device to which page is saved(i m saving it in separate swap partion created for this purpose which is /dev/hda7).then i read that page again by brw_page with all para. same except page desc. is of new allocated page.but content of both printk do not match.
i 've even tried to write separately and read after some time separately(thinking it was asynchronos write problem).but it did not match.
plz help me out its urgent.
following function would make it more clear.
THANKS





static int device_open(struct inode *inode, struct file *file)
	{
	   	static int counter = 0;
		unsigned long offset;
                struct page * page;
		int zones_used;
    	        int sar_zones[8];
                kdev_t sar_dev;    
                int block_size;
                swp_entry_t entry;
                struct swap_info_struct *p;
                int type;  
                int *k;  
                int i;  

          if(Device_Open) return -EBUSY;
             Device_Open++;
       
      
        
            page=&mem_map[0];  // any page descriptor
	    block_size = PAGE_SIZE;
           
            sar_dev=MKDEV(3,7);
            sar_zones[0]=200;  //arbitary block no from swap device
            k=page_address(page);
           printk("\nWRITING...........\n");
		for(i=0;i<100;i++)    
           {
                 printk(" %d ",*k);
                 k++;
           }
		printk("\n%u",page_address(page));
                printk("\n%u",page->virtual);
	   	printk("\n<1>blocksize = %d\n block size = %d",blksize_size[3][7],block_size);
	    	TryLockPage(page);

              if(PageLocked(page))
		{
			printk("\n\n<1>Page |locked \n\n");
	       
       
             			brw_page(1,page,sar_dev,sar_zones,block_size); 
				printk("\n\n<1>Done\n\n");   
                  
		  
		}

          printk("device = %d",sar_dev);
          page=alloc_page(GFP_ATOMIC); // get free page desc. addr
          if(page!=NULL)
            {  
           TryLockPage(page);
	   block_size=PAGE_SIZE;
           brw_page(0,page,sar_dev,sar_zones,block_size);
          printk("\n<1>READING.............\n");
           printk("\n\n");  
	  }

            k=page_address(page);
               for(i=0;i<100;i++)
           {
	      printk(" %d ",*k);
                 k++;
           }


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux