亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sd.c

?? LINUX1.0源代碼,代碼條理清晰
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	  SCpnt->use_sg = count;  /* Number of chains */
	  count = 512;/* scsi_malloc can only allocate in chunks of 512 bytes*/
	  while( count < (SCpnt->use_sg * sizeof(struct scatterlist))) 
	    count = count << 1;
	  SCpnt->sglist_len = count;
	  sgpnt = (struct scatterlist * ) scsi_malloc(count);
	  if (!sgpnt) {
	    printk("Warning - running *really* short on DMA buffers\n");
	    SCpnt->use_sg = 0;  /* No memory left - bail out */
	    this_count = SCpnt->request.current_nr_sectors;
	    buff = SCpnt->request.buffer;
	  } else {
	    buff = (char *) sgpnt;
	    count = 0;
	    bh = SCpnt->request.bh;
	    for(count = 0, bh = SCpnt->request.bh; count < SCpnt->use_sg; 
		count++, bh = bh->b_reqnext) {
	      sgpnt[count].address = bh->b_data;
	      sgpnt[count].alt_address = NULL;
	      sgpnt[count].length = bh->b_size;
	      if (((int) sgpnt[count].address) + sgpnt[count].length > 
		  ISA_DMA_THRESHOLD & (SCpnt->host->unchecked_isa_dma)) {
		sgpnt[count].alt_address = sgpnt[count].address;
		/* We try and avoid exhausting the DMA pool, since it is easier
		   to control usage here.  In other places we might have a more
		   pressing need, and we would be screwed if we ran out */
		if(dma_free_sectors < (bh->b_size >> 9) + 5) {
		  sgpnt[count].address = NULL;
		} else {
		  sgpnt[count].address = (char *) scsi_malloc(sgpnt[count].length);
		};
/* If we start running low on DMA buffers, we abort the scatter-gather
   operation, and free all of the memory we have allocated.  We want to
   ensure that all scsi operations are able to do at least a non-scatter/gather
   operation */
		if(sgpnt[count].address == NULL){ /* Out of dma memory */
		  printk("Warning: Running low on SCSI DMA buffers");
		  /* Try switching back to a non scatter-gather operation. */
		  while(--count >= 0){
		    if(sgpnt[count].alt_address) 
		      scsi_free(sgpnt[count].address, sgpnt[count].length);
		  };
		  this_count = SCpnt->request.current_nr_sectors;
		  buff = SCpnt->request.buffer;
		  SCpnt->use_sg = 0;
		  scsi_free(buff, SCpnt->sglist_len);
		  break;
		};

		if (SCpnt->request.cmd == WRITE)
		  memcpy(sgpnt[count].address, sgpnt[count].alt_address, 
			 sgpnt[count].length);
	      };
	    }; /* for loop */
	  };  /* Able to malloc sgpnt */
	};  /* Host adapter capable of scatter-gather */

/* Now handle the possibility of DMA to addresses > 16Mb */

	if(SCpnt->use_sg == 0){
	  if (((int) buff) + (this_count << 9) > ISA_DMA_THRESHOLD && 
	    (SCpnt->host->unchecked_isa_dma)) {
	    buff = (char *) scsi_malloc(this_count << 9);
	    if(buff == NULL) panic("Ran out of DMA buffers.");
	    if (SCpnt->request.cmd == WRITE)
	      memcpy(buff, (char *)SCpnt->request.buffer, this_count << 9);
	  };
	};

#ifdef DEBUG
	printk("sd%d : %s %d/%d 512 byte blocks.\n", MINOR(SCpnt->request.dev),
		(SCpnt->request.cmd == WRITE) ? "writing" : "reading",
		this_count, SCpnt->request.nr_sectors);
#endif

	cmd[1] = (SCpnt->lun << 5) & 0xe0;

	if (rscsi_disks[dev].sector_size == 1024){
	  if(block & 1) panic("sd.c:Bad block number requested");
	  if(this_count & 1) panic("sd.c:Bad block number requested");
	  block = block >> 1;
	  this_count = this_count >> 1;
	};

	if (rscsi_disks[dev].sector_size == 256){
	  block = block << 1;
	  this_count = this_count << 1;
	};

	if (((this_count > 0xff) ||  (block > 0x1fffff)) && rscsi_disks[dev].ten)
		{
		if (this_count > 0xffff)
			this_count = 0xffff;

		cmd[0] += READ_10 - READ_6 ;
		cmd[2] = (unsigned char) (block >> 24) & 0xff;
		cmd[3] = (unsigned char) (block >> 16) & 0xff;
		cmd[4] = (unsigned char) (block >> 8) & 0xff;
		cmd[5] = (unsigned char) block & 0xff;
		cmd[6] = cmd[9] = 0;
		cmd[7] = (unsigned char) (this_count >> 8) & 0xff;
		cmd[8] = (unsigned char) this_count & 0xff;
		}
	else
		{
		if (this_count > 0xff)
			this_count = 0xff;

		cmd[1] |= (unsigned char) ((block >> 16) & 0x1f);
		cmd[2] = (unsigned char) ((block >> 8) & 0xff);
		cmd[3] = (unsigned char) block & 0xff;
		cmd[4] = (unsigned char) this_count;
		cmd[5] = 0;
		}

/*
 * We shouldn't disconnect in the middle of a sector, so with a dumb 
 * host adapter, it's safe to assume that we can at least transfer 
 * this many bytes between each connect / disconnect.  
 */

        SCpnt->transfersize = rscsi_disks[dev].sector_size;
        SCpnt->underflow = this_count << 9; 

	scsi_do_cmd (SCpnt, (void *) cmd, buff, 
		     this_count * rscsi_disks[dev].sector_size,
		     rw_intr, SD_TIMEOUT, MAX_RETRIES);
}

int check_scsidisk_media_change(int full_dev, int flag){
        int retval;
	int target;
	struct inode inode;

	target =  DEVICE_NR(MINOR(full_dev));

	if (target >= NR_SD) {
		printk("SCSI disk request error: invalid device.\n");
		return 0;
	};

	if(!rscsi_disks[target].device->removable) return 0;

	inode.i_rdev = full_dev;  /* This is all we really need here */
	retval = sd_ioctl(&inode, NULL, SCSI_IOCTL_TEST_UNIT_READY, 0);

	if(retval){ /* Unable to test, unit probably not ready.  This usually
		     means there is no disc in the drive.  Mark as changed,
		     and we will figure it out later once the drive is
		     available again.  */

	  rscsi_disks[target].device->changed = 1;
	  return 1; /* This will force a flush, if called from
		       check_disk_change */
	};

	retval = rscsi_disks[target].device->changed;
	if(!flag) rscsi_disks[target].device->changed = 0;
	return retval;
}

static void sd_init_done (Scsi_Cmnd * SCpnt)
{
  struct request * req;
  struct task_struct * p;
  
  req = &SCpnt->request;
  req->dev = 0xfffe; /* Busy, but indicate request done */
  
  if ((p = req->waiting) != NULL) {
    req->waiting = NULL;
    p->state = TASK_RUNNING;
    if (p->counter > current->counter)
      need_resched = 1;
  }
}

static int sd_init_onedisk(int i)
{
  int j = 0;
  unsigned char cmd[10];
  unsigned char *buffer;
  char spintime;
  int the_result, retries;
  Scsi_Cmnd * SCpnt;

  /* We need to retry the READ_CAPACITY because a UNIT_ATTENTION is considered
     a fatal error, and many devices report such an error just after a scsi
     bus reset. */

  SCpnt = allocate_device(NULL, rscsi_disks[i].device->index, 1);
  buffer = (unsigned char *) scsi_malloc(512);

  spintime = 0;

  /* Spin up drives, as required.  Only do this at boot time */
  if (current == task[0]){
    do{
      cmd[0] = TEST_UNIT_READY;
      cmd[1] = (rscsi_disks[i].device->lun << 5) & 0xe0;
      memset ((void *) &cmd[2], 0, 8);
      SCpnt->request.dev = 0xffff;  /* Mark as really busy again */
      SCpnt->sense_buffer[0] = 0;
      SCpnt->sense_buffer[2] = 0;
      
      scsi_do_cmd (SCpnt,
		   (void *) cmd, (void *) buffer,
		   512, sd_init_done,  SD_TIMEOUT,
		   MAX_RETRIES);
      
      while(SCpnt->request.dev != 0xfffe);
      
      the_result = SCpnt->result;
      
      /* Look for non-removable devices that return NOT_READY.  Issue command
	 to spin up drive for these cases. */
      if(the_result && !rscsi_disks[i].device->removable && 
	 SCpnt->sense_buffer[2] == NOT_READY) {
	int time1;
	if(!spintime){
	  printk( "sd%d: Spinning up disk...", i );
	  cmd[0] = START_STOP;
	  cmd[1] = (rscsi_disks[i].device->lun << 5) & 0xe0;
	  cmd[1] |= 1;  /* Return immediately */
	  memset ((void *) &cmd[2], 0, 8);
	  cmd[4] = 1; /* Start spin cycle */
	  SCpnt->request.dev = 0xffff;  /* Mark as really busy again */
	  SCpnt->sense_buffer[0] = 0;
	  SCpnt->sense_buffer[2] = 0;
	  
	  scsi_do_cmd (SCpnt,
		       (void *) cmd, (void *) buffer,
		       512, sd_init_done,  SD_TIMEOUT,
		       MAX_RETRIES);
	  
	  while(SCpnt->request.dev != 0xfffe);

	  spintime = jiffies;
	};

	time1 = jiffies;
	while(jiffies < time1 + 100); /* Wait 1 second for next try */
	printk( "." );
      };
    } while(the_result && spintime && spintime+5000 > jiffies);
    if (spintime) {
       if (the_result)
           printk( "not responding...\n" );
       else
           printk( "ready\n" );
    }
  };  /* current == task[0] */


  retries = 3;
  do {
    cmd[0] = READ_CAPACITY;
    cmd[1] = (rscsi_disks[i].device->lun << 5) & 0xe0;
    memset ((void *) &cmd[2], 0, 8);
    memset ((void *) buffer, 0, 8);
    SCpnt->request.dev = 0xffff;  /* Mark as really busy again */
    SCpnt->sense_buffer[0] = 0;
    SCpnt->sense_buffer[2] = 0;
    
    scsi_do_cmd (SCpnt,
		 (void *) cmd, (void *) buffer,
		 8, sd_init_done,  SD_TIMEOUT,
		 MAX_RETRIES);
    
    if (current == task[0])
      while(SCpnt->request.dev != 0xfffe);
    else
      if (SCpnt->request.dev != 0xfffe){
	SCpnt->request.waiting = current;
	current->state = TASK_UNINTERRUPTIBLE;
	while (SCpnt->request.dev != 0xfffe) schedule();
      };
    
    the_result = SCpnt->result;
    retries--;

  } while(the_result && retries);

  SCpnt->request.dev = -1;  /* Mark as not busy */

  wake_up(&scsi_devices[SCpnt->index].device_wait); 

  /* Wake up a process waiting for device*/

  /*
   *	The SCSI standard says "READ CAPACITY is necessary for self confuring software"
   *	While not mandatory, support of READ CAPACITY is strongly encouraged.
   *	We used to die if we couldn't successfully do a READ CAPACITY.
   *	But, now we go on about our way.  The side effects of this are
   *
   *	1.  We can't know block size with certainty.  I have said "512 bytes is it"
   *	   	as this is most common.
   *
   *	2.  Recovery from when some one attempts to read past the end of the raw device will
   *	    be slower.
   */

  if (the_result)
    {
      printk ("sd%d : READ CAPACITY failed.\n"
	      "sd%d : status = %x, message = %02x, host = %d, driver = %02x \n",
	      i,i,
	      status_byte(the_result),
	      msg_byte(the_result),
	      host_byte(the_result),
	      driver_byte(the_result)
	      );
      if (driver_byte(the_result)  & DRIVER_SENSE)
	printk("sd%d : extended sense code = %1x \n", i, SCpnt->sense_buffer[2] & 0xf);
      else
	printk("sd%d : sense not available. \n", i);

      printk("sd%d : block size assumed to be 512 bytes, disk size 1GB.  \n", i);
      rscsi_disks[i].capacity = 0x1fffff;
      rscsi_disks[i].sector_size = 512;

      /* Set dirty bit for removable devices if not ready - sometimes drives
	 will not report this properly. */
      if(rscsi_disks[i].device->removable && 
	 SCpnt->sense_buffer[2] == NOT_READY)
	rscsi_disks[i].device->changed = 1;

    }
  else
    {
      rscsi_disks[i].capacity = (buffer[0] << 24) |
	(buffer[1] << 16) |
	  (buffer[2] << 8) |
	    buffer[3];

      rscsi_disks[i].sector_size = (buffer[4] << 24) |
	(buffer[5] << 16) | (buffer[6] << 8) | buffer[7];

      if (rscsi_disks[i].sector_size != 512 &&
	  rscsi_disks[i].sector_size != 1024 &&
	  rscsi_disks[i].sector_size != 256)
	{
	  printk ("sd%d : unsupported sector size %d.\n",
		  i, rscsi_disks[i].sector_size);
	  if(rscsi_disks[i].device->removable){
	    rscsi_disks[i].capacity = 0;
	  } else {
	    printk ("scsi : deleting disk entry.\n");
	    for  (j=i;  j < NR_SD - 1;)
	      rscsi_disks[j] = rscsi_disks[++j];
	    --i;
	    --NR_SD;
	    scsi_free(buffer, 512);
	    return i;
	  };
	}
      if(rscsi_disks[i].sector_size == 1024)
	rscsi_disks[i].capacity <<= 1;  /* Change this into 512 byte sectors */
      if(rscsi_disks[i].sector_size == 256)
	rscsi_disks[i].capacity >>= 1;  /* Change this into 512 byte sectors */
    }

  rscsi_disks[i].ten = 1;
  rscsi_disks[i].remap = 1;
  scsi_free(buffer, 512);
  return i;
}

/*
	The sd_init() function looks at all SCSI drives present, determines
	their size, and reads partition	table entries for them.
*/

unsigned long sd_init(unsigned long memory_start, unsigned long memory_end)
{
	int i;

	if (register_blkdev(MAJOR_NR,"sd",&sd_fops)) {
		printk("Unable to get major %d for SCSI disk\n",MAJOR_NR);
		return memory_start;
	}
	if (MAX_SD == 0) return memory_start;

	sd_sizes = (int *) memory_start;
	memory_start += (MAX_SD << 4) * sizeof(int);
	memset(sd_sizes, 0, (MAX_SD << 4) * sizeof(int));

	sd_blocksizes = (int *) memory_start;
	memory_start += (MAX_SD << 4) * sizeof(int);
	for(i=0;i<(MAX_SD << 4);i++) sd_blocksizes[i] = 1024;
	blksize_size[MAJOR_NR] = sd_blocksizes;

	sd = (struct hd_struct *) memory_start;
	memory_start += (MAX_SD << 4) * sizeof(struct hd_struct);

	sd_gendisk.max_nr = MAX_SD;
	sd_gendisk.part = sd;
	sd_gendisk.sizes = sd_sizes;
	sd_gendisk.real_devices = (void *) rscsi_disks;

	for (i = 0; i < NR_SD; ++i)
	  i = sd_init_onedisk(i);

	blk_dev[MAJOR_NR].request_fn = DEVICE_REQUEST;

	/* If our host adapter is capable of scatter-gather, then we increase
	   the read-ahead to 16 blocks (32 sectors).  If not, we use
	   a two block (4 sector) read ahead. */
	if(rscsi_disks[0].device->host->sg_tablesize)
	  read_ahead[MAJOR_NR] = 32;
	/* 64 sector read-ahead */
	else
	  read_ahead[MAJOR_NR] = 4;  /* 4 sector read-ahead */
	
	sd_gendisk.next = gendisk_head;
	gendisk_head = &sd_gendisk;
	return memory_start;
}

unsigned long sd_init1(unsigned long mem_start, unsigned long mem_end){
  rscsi_disks = (Scsi_Disk *) mem_start;
  mem_start += MAX_SD * sizeof(Scsi_Disk);
  return mem_start;
};

void sd_attach(Scsi_Device * SDp){
  rscsi_disks[NR_SD++].device = SDp;
  if(NR_SD > MAX_SD) panic ("scsi_devices corrupt (sd)");
};

#define DEVICE_BUSY rscsi_disks[target].device->busy
#define USAGE rscsi_disks[target].device->access_count
#define CAPACITY rscsi_disks[target].capacity
#define MAYBE_REINIT  sd_init_onedisk(target)
#define GENDISK_STRUCT sd_gendisk

/* This routine is called to flush all partitions and partition tables
   for a changed scsi disk, and then re-read the new partition table.
   If we are revalidating a disk because of a media change, then we
   enter with usage == 0.  If we are using an ioctl, we automatically have
   usage == 1 (we need an open channel to use an ioctl :-), so this
   is our limit.
 */
int revalidate_scsidisk(int dev, int maxusage){
	  int target, major;
	  struct gendisk * gdev;
	  int max_p;
	  int start;
	  int i;

	  target =  DEVICE_NR(MINOR(dev));
	  gdev = &GENDISK_STRUCT;

	  cli();
	  if (DEVICE_BUSY || USAGE > maxusage) {
	    sti();
	    printk("Device busy for revalidation (usage=%d)\n", USAGE);
	    return -EBUSY;
	  };
	  DEVICE_BUSY = 1;
	  sti();

	  max_p = gdev->max_p;
	  start = target << gdev->minor_shift;
	  major = MAJOR_NR << 8;

	  for (i=max_p - 1; i >=0 ; i--) {
	    sync_dev(major | start | i);
	    invalidate_inodes(major | start | i);
	    invalidate_buffers(major | start | i);
	    gdev->part[start+i].start_sect = 0;
	    gdev->part[start+i].nr_sects = 0;
	  };

#ifdef MAYBE_REINIT
	  MAYBE_REINIT;
#endif

	  gdev->part[start].nr_sects = CAPACITY;
	  resetup_one_dev(gdev, target);

	  DEVICE_BUSY = 0;
	  return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品精华液2区45| 亚洲高清一区二区三区| 亚洲成a人片综合在线| 狠狠狠色丁香婷婷综合久久五月| 成人黄色网址在线观看| 日韩欧美三级在线| 亚洲一区二区三区视频在线| 国产精品系列在线播放| 9191精品国产综合久久久久久| 中文字幕av一区二区三区| 毛片基地黄久久久久久天堂| 欧美性猛交xxxxxxxx| 日韩一区欧美一区| 国产成人h网站| 久久奇米777| 激情综合一区二区三区| 欧美一级电影网站| 亚洲第一成年网| 91久久精品网| 一区二区三区四区不卡视频 | 欧美成人性福生活免费看| 亚洲一区二区三区视频在线播放 | 国产经典欧美精品| 精品国产凹凸成av人导航| 视频一区中文字幕| 欧美一区二区三区爱爱| 婷婷综合五月天| 欧美精品一二三区| 天天色综合成人网| 在线观看亚洲专区| 亚洲国产精品影院| 91麻豆精品国产无毒不卡在线观看 | 日本韩国欧美一区二区三区| 亚洲欧美日韩国产另类专区| 97精品国产97久久久久久久久久久久| 亚洲国产精品av| 成人avav影音| 亚洲另类在线视频| 在线免费观看日韩欧美| 午夜欧美电影在线观看| 欧美福利视频一区| 精品亚洲aⅴ乱码一区二区三区| 日韩精品专区在线影院重磅| 国产一二精品视频| 亚洲天堂精品在线观看| 91福利社在线观看| 美女爽到高潮91| 久久亚洲捆绑美女| 99久久99久久精品免费观看 | 日本视频一区二区| 久久久国产精品午夜一区ai换脸| 成人激情视频网站| 亚洲成av人片观看| 欧美精品一区二区三区蜜桃| 国产91精品欧美| 亚洲女同ⅹxx女同tv| 日韩一卡二卡三卡四卡| 精品一区二区三区视频在线观看| 国产欧美一区二区在线观看| 91麻豆高清视频| 秋霞影院一区二区| 亚洲国产精品精华液ab| 欧美日韩综合不卡| 韩国精品一区二区| 一区二区久久久| 一区二区三区影院| 亚洲一区二区欧美| 777色狠狠一区二区三区| 免费在线观看一区二区三区| 欧美激情一区二区三区不卡| 欧美性猛交一区二区三区精品| 日本怡春院一区二区| 国产精品网站在线播放| 91福利在线看| 国产69精品久久99不卡| 亚洲午夜激情网站| 欧美色成人综合| 久久国产夜色精品鲁鲁99| 国产亚洲欧美日韩日本| 91精品办公室少妇高潮对白| 国产一区二区不卡| 日韩电影免费在线| 亚洲乱码国产乱码精品精的特点| 欧美哺乳videos| 欧美系列日韩一区| 不卡免费追剧大全电视剧网站| 日日摸夜夜添夜夜添国产精品| 欧美国产一区视频在线观看| 欧美一区二区三区啪啪| 91丨porny丨在线| 国产一二三精品| 久久疯狂做爰流白浆xx| 天堂一区二区在线| 亚洲一卡二卡三卡四卡无卡久久| 国产亚洲精品久| 精品久久久久一区| 日韩视频永久免费| 欧美精品自拍偷拍动漫精品| 91麻豆.com| 色综合中文字幕国产 | 国产馆精品极品| 日本亚洲天堂网| 性做久久久久久久免费看| 一区二区三区日本| 国产精品免费丝袜| 中文字幕免费在线观看视频一区| 精品福利在线导航| 精品久久人人做人人爽| 欧美成人猛片aaaaaaa| 欧美一区2区视频在线观看| 欧美日韩精品二区第二页| 欧美系列在线观看| 欧美日韩一区高清| 欧美日韩国产精选| 欧美日本国产视频| 欧美精品乱码久久久久久| 欧美无砖专区一中文字| 精品视频在线视频| 在线播放欧美女士性生活| 7777精品伊人久久久大香线蕉完整版 | 国产精品成人在线观看| 亚洲欧美在线aaa| 亚洲欧洲日韩女同| 亚洲激情中文1区| 亚洲高清免费观看高清完整版在线观看| 一区二区三区精品视频在线| 亚洲资源在线观看| 日本亚洲最大的色成网站www| 视频一区二区三区入口| 日本成人在线网站| 国产精品一级在线| 99在线视频精品| 日本韩国欧美三级| 91精品国产综合久久国产大片| 制服丝袜av成人在线看| 日韩西西人体444www| 久久久午夜精品| 亚洲视频一区在线| 日韩激情视频网站| 国产成人亚洲综合a∨婷婷| 成人av在线电影| 欧美日韩电影在线播放| 精品久久久久av影院| 国产精品家庭影院| 日日摸夜夜添夜夜添国产精品| 国产一区二三区好的| 一本到一区二区三区| 日韩欧美一二三区| 中文字幕一区二区三| 图片区小说区区亚洲影院| 国产乱妇无码大片在线观看| 在线视频你懂得一区二区三区| 欧美一激情一区二区三区| 国产精品免费观看视频| 天涯成人国产亚洲精品一区av| 紧缚捆绑精品一区二区| 日本黄色一区二区| 日本一区二区视频在线观看| 亚洲风情在线资源站| 成人网页在线观看| 69成人精品免费视频| 国产精品狼人久久影院观看方式| 天天综合色天天综合色h| 丁香天五香天堂综合| 91麻豆精品91久久久久同性| 中文字幕一区二区三中文字幕| 日本系列欧美系列| 欧美性色欧美a在线播放| 国产欧美一区二区精品仙草咪 | 欧美一区二区视频在线观看2020| 国产免费成人在线视频| 五月天精品一区二区三区| 97久久超碰精品国产| 精品国产电影一区二区| 日韩一区精品视频| 色哟哟一区二区三区| 国产欧美日韩亚州综合| 日本人妖一区二区| 欧美日韩久久久一区| 最新国产精品久久精品| 国产成人综合视频| 久久亚洲一区二区三区明星换脸| 亚洲不卡在线观看| 欧洲生活片亚洲生活在线观看| 国产精品视频yy9299一区| 激情深爱一区二区| 日韩一区二区三区观看| 亚洲国产一区二区a毛片| av不卡一区二区三区| 国产精品久久午夜| 国产福利精品一区| 久久夜色精品一区| 国产激情视频一区二区三区欧美| 欧美乱妇一区二区三区不卡视频| 一区二区三区四区蜜桃| 91免费国产视频网站| 亚洲精选视频在线| 日本高清成人免费播放| 一区二区三区在线免费观看| 色综合色综合色综合色综合色综合 |