5#include6#include7#include8#include9#include10#include

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

redis源碼筆記 - aof

系統(tǒng) 2649 0

aof是redis提供的一種數(shù)據(jù)持久化機(jī)制,通過將每一條命令dump下來,保持?jǐn)?shù)據(jù)和內(nèi)存中的數(shù)據(jù)一致。

      
          1
      
       #include 
      
        "
      
      
        redis.h
      
      
        "
      
      
          2
      
       #include 
      
        "
      
      
        bio.h
      
      
        "
      
      
          3
      
      
          4
      
       #include <signal.h>
      
          5
      
       #include <fcntl.h>
      
          6
      
       #include <sys/stat.h>
      
          7
      
       #include <sys/types.h>
      
          8
      
       #include <sys/time.h>
      
          9
      
       #include <sys/resource.h>
      
         10
      
       #include <sys/wait.h>
      
         11
      
      
         12
      
      
        void
      
       aofUpdateCurrentSize(
      
        void
      
      
        );
      
      
         13
      
      
         14
      
      
        void
      
       aof_background_fsync(
      
        int
      
      
         fd) {
      
      
         15
      
           bioCreateBackgroundJob(REDIS_BIO_AOF_FSYNC,(
      
        void
      
      *)(
      
        long
      
      
        )fd,NULL,NULL);
      
      
         16
      
      
        }
      
      
         17
      
      
         18
      
      
        /*
      
      
         Called when the user switches from "appendonly yes" to "appendonly no"
      
      
         19
      
      
         * at runtime using the CONFIG command. 
      
      
        */
      
      
         20
      
      
        void
      
       stopAppendOnly(
      
        void
      
      
        ) {
      
      
         21
      
           flushAppendOnlyFile(
      
        1
      
      
        );
      
      
         22
      
      
            aof_fsync(server.appendfd);
      
      
         23
      
      
            close(server.appendfd);
      
      
         24
      
      
         25
      
           server.appendfd = -
      
        1
      
      
        ;
      
      
         26
      
           server.appendseldb = -
      
        1
      
      
        ;
      
      
         27
      
           server.appendonly = 
      
        0
      
      
        ;
      
      
         28
      
      
        /*
      
      
         rewrite operation in progress? kill it, wait child exit 
      
      
        */
      
      
         29
      
      
        if
      
       (server.bgrewritechildpid != -
      
        1
      
      
        ) {
      
      
         30
      
      
        int
      
      
         statloc;
      
      
         31
      
      
         32
      
      
        if
      
       (kill(server.bgrewritechildpid,SIGKILL) != -
      
        1
      
      
        )
      
      
         33
      
                   wait3(&statloc,
      
        0
      
      
        ,NULL);
      
      
         34
      
      
        /*
      
      
         reset the buffer accumulating changes while the child saves 
      
      
        */
      
      
         35
      
      
                sdsfree(server.bgrewritebuf);
      
      
         36
      
               server.bgrewritebuf =
      
         sdsempty();
      
      
         37
      
               server.bgrewritechildpid = -
      
        1
      
      
        ;
      
      
         38
      
      
            }
      
      
         39
      
      
        }
      
      
         40
      
      
         41
      
      
        /*
      
      
         Called when the user switches from "appendonly no" to "appendonly yes"
      
      
         42
      
      
         * at runtime using the CONFIG command. 
      
      
        */
      
      
         43
      
      
        int
      
       startAppendOnly(
      
        void
      
      
        ) {
      
      
         44
      
           server.appendonly = 
      
        1
      
      
        ;
      
      
         45
      
           server.lastfsync =
      
         time(NULL);
      
      
         46
      
           server.appendfd = open(server.appendfilename,O_WRONLY|O_APPEND|O_CREAT,
      
        0644
      
      
        );
      
      
         47
      
      
        if
      
       (server.appendfd == -
      
        1
      
      
        ) {
      
      
         48
      
               redisLog(REDIS_WARNING,
      
        "
      
      
        Used tried to switch on AOF via CONFIG, but I can't open the AOF file: %s
      
      
        "
      
      
        ,strerror(errno));
      
      
         49
      
      
        return
      
      
         REDIS_ERR;
      
      
         50
      
      
            }
      
      
         51
      
      
        if
      
       (rewriteAppendOnlyFileBackground() ==
      
         REDIS_ERR) {
      
      
         52
      
               server.appendonly = 
      
        0
      
      
        ;
      
      
         53
      
      
                close(server.appendfd);
      
      
         54
      
               redisLog(REDIS_WARNING,
      
        "
      
      
        Used tried to switch on AOF via CONFIG, I can't trigger a background AOF rewrite operation. Check the above logs for more info about the error.
      
      
        "
      
      
        ,strerror(errno));
      
      
         55
      
      
        return
      
      
         REDIS_ERR;
      
      
         56
      
      
            }
      
      
         57
      
      
        return
      
      
         REDIS_OK;
      
      
         58
      
      
        }
      
      
         59
      
      
         60
      
      
        /*
      
      
         Write the append only file buffer on disk.
      
      
         61
      
      
         *
      
      
         62
      
      
         * Since we are required to write the AOF before replying to the client,
      
      
         63
      
      
         * and the only way the client socket can get a write is entering when the
      
      
         64
      
      
         * the event loop, we accumulate all the AOF writes in a memory
      
      
         65
      
      
         * buffer and write it on disk using this function just before entering
      
      
         66
      
      
         * the event loop again.
      
      
         67
      
      
         *
      
      
         68
      
      
         * About the 'force' argument:
      
      
         69
      
      
         *
      
      
         70
      
      
         * When the fsync policy is set to 'everysec' we may delay the flush if there
      
      
         71
      
      
         * is still an fsync() going on in the background thread, since for instance
      
      
         72
      
      
         * on Linux write(2) will be blocked by the background fsync anyway.
      
      
         73
      
      
         * When this happens we remember that there is some aof buffer to be
      
      
         74
      
      
         * flushed ASAP, and will try to do that in the serverCron() function.
      
      
         75
      
      
         *
      
      
         76
      
      
         * However if force is set to 1 we'll write regardless of the background
      
      
         77
      
      
         * fsync. 
      
      
        */
      
      
         78
      
      
        void
      
       flushAppendOnlyFile(
      
        int
      
      
         force) {
      
      
         79
      
      
            ssize_t nwritten;
      
      
         80
      
      
        int
      
       sync_in_progress = 
      
        0
      
      
        ;
      
      
         81
      
      
         82
      
      
        if
      
       (sdslen(server.aofbuf) == 
      
        0
      
      ) 
      
        return
      
      
        ;
      
      
         83
      
      
         84
      
      
        if
      
       (server.appendfsync ==
      
         APPENDFSYNC_EVERYSEC)
      
      
         85
      
               sync_in_progress = bioPendingJobsOfType(REDIS_BIO_AOF_FSYNC) != 
      
        0
      
      
        ;
      
      
         86
      
      
         87
      
      
        if
      
       (server.appendfsync == APPENDFSYNC_EVERYSEC && !
      
        force) {
      
      
         88
      
      
        /*
      
      
         With this append fsync policy we do background fsyncing.
      
      
         89
      
      
                 * If the fsync is still in progress we can try to delay
      
      
         90
      
      
                 * the write for a couple of seconds. 
      
      
        */
      
      
         91
      
      
        if
      
      
         (sync_in_progress) {
      
      
         92
      
      
        if
      
       (server.aof_flush_postponed_start == 
      
        0
      
      
        ) {
      
      
         93
      
      
        /*
      
      
         No previous write postponinig, remember that we are
      
      
         94
      
      
                         * postponing the flush and return. 
      
      
        */
      
      
         95
      
                       server.aof_flush_postponed_start =
      
         server.unixtime;
      
      
         96
      
      
        return
      
      
        ;
      
      
         97
      
                   } 
      
        else
      
      
        if
      
       (server.unixtime - server.aof_flush_postponed_start < 
      
        2
      
      
        ) {
      
      
         98
      
      
        /*
      
      
         We were already waiting for fsync to finish, but for less
      
      
         99
      
      
                         * than two seconds this is still ok. Postpone again. 
      
      
        */
      
      
        100
      
      
        return
      
      
        ;
      
      
        101
      
      
                    }
      
      
        102
      
      
        /*
      
      
         Otherwise fall trough, and go write since we can't wait
      
      
        103
      
      
                     * over two seconds. 
      
      
        */
      
      
        104
      
                   redisLog(REDIS_NOTICE,
      
        "
      
      
        Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
      
      
        "
      
      
        );
      
      
        105
      
      
                }
      
      
        106
      
      
            }
      
      
        107
      
      
        /*
      
      
         If you are following this code path, then we are going to write so
      
      
        108
      
      
             * set reset the postponed flush sentinel to zero. 
      
      
        */
      
      
        109
      
           server.aof_flush_postponed_start = 
      
        0
      
      
        ;
      
      
        110
      
      
        111
      
      
        /*
      
      
         We want to perform a single write. This should be guaranteed atomic
      
      
        112
      
      
             * at least if the filesystem we are writing is a real physical one.
      
      
        113
      
      
             * While this will save us against the server being killed I don't think
      
      
        114
      
      
             * there is much to do about the whole server stopping for power problems
      
      
        115
      
      
             * or alike 
      
      
        */
      
      
        116
      
           nwritten =
      
         write(server.appendfd,server.aofbuf,sdslen(server.aofbuf));
      
      
        117
      
      
        if
      
       (nwritten !=
      
         (signed)sdslen(server.aofbuf)) {
      
      
        118
      
      
        /*
      
      
         Ooops, we are in troubles. The best thing to do for now is
      
      
        119
      
      
                 * aborting instead of giving the illusion that everything is
      
      
        120
      
      
                 * working as expected. 
      
      
        */
      
      
        121
      
      
        if
      
       (nwritten == -
      
        1
      
      
        ) {
      
      
        122
      
                   redisLog(REDIS_WARNING,
      
        "
      
      
        Exiting on error writing to the append-only file: %s
      
      
        "
      
      
        ,strerror(errno));
      
      
        123
      
               } 
      
        else
      
      
         {
      
      
        124
      
                   redisLog(REDIS_WARNING,
      
        "
      
      
        Exiting on short write while writing to the append-only file: %s
      
      
        "
      
      
        ,strerror(errno));
      
      
        125
      
      
                }
      
      
        126
      
               exit(
      
        1
      
      
        );
      
      
        127
      
      
            }
      
      
        128
      
           server.appendonly_current_size +=
      
         nwritten;
      
      
        129
      
      
        130
      
      
        /*
      
      
         Re-use AOF buffer when it is small enough. The maximum comes from the
      
      
        131
      
      
             * arena size of 4k minus some overhead (but is otherwise arbitrary). 
      
      
        */
      
      
        132
      
      
        if
      
       ((sdslen(server.aofbuf)+sdsavail(server.aofbuf)) < 
      
        4000
      
      
        ) {
      
      
        133
      
      
                sdsclear(server.aofbuf);
      
      
        134
      
           } 
      
        else
      
      
         {
      
      
        135
      
      
                sdsfree(server.aofbuf);
      
      
        136
      
               server.aofbuf =
      
         sdsempty();
      
      
        137
      
      
            }
      
      
        138
      
      
        139
      
      
        /*
      
      
         Don't fsync if no-appendfsync-on-rewrite is set to yes and there are
      
      
        140
      
      
             * children doing I/O in the background. 
      
      
        */
      
      
        141
      
      
        if
      
       (server.no_appendfsync_on_rewrite &&
      
        142
      
               (server.bgrewritechildpid != -
      
        1
      
       || server.bgsavechildpid != -
      
        1
      
      
        ))
      
      
        143
      
      
        return
      
      
        ;
      
      
        144
      
      
        145
      
      
        /*
      
      
         Perform the fsync if needed. 
      
      
        */
      
      
        146
      
      
        if
      
       (server.appendfsync ==
      
         APPENDFSYNC_ALWAYS) {
      
      
        147
      
      
        /*
      
      
         aof_fsync is defined as fdatasync() for Linux in order to avoid
      
      
        148
      
      
                 * flushing metadata. 
      
      
        */
      
      
        149
      
               aof_fsync(server.appendfd); 
      
        /*
      
      
         Let's try to get this data on the disk 
      
      
        */
      
      
        150
      
               server.lastfsync =
      
         server.unixtime;
      
      
        151
      
           } 
      
        else
      
      
        if
      
       ((server.appendfsync == APPENDFSYNC_EVERYSEC &&
      
        152
      
                       server.unixtime >
      
         server.lastfsync)) {
      
      
        153
      
      
        if
      
       (!
      
        sync_in_progress) aof_background_fsync(server.appendfd);
      
      
        154
      
               server.lastfsync =
      
         server.unixtime;
      
      
        155
      
      
            }
      
      
        156
      
      
        }
      
      
        157
      
      
        158
      
       sds catAppendOnlyGenericCommand(sds dst, 
      
        int
      
       argc, robj **
      
        argv) {
      
      
        159
      
      
        char
      
       buf[
      
        32
      
      
        ];
      
      
        160
      
      
        int
      
      
         len, j;
      
      
        161
      
           robj *
      
        o;
      
      
        162
      
      
        163
      
           buf[
      
        0
      
      ] = 
      
        '
      
      
        *
      
      
        '
      
      
        ;
      
      
        164
      
           len = 
      
        1
      
      +ll2string(buf+
      
        1
      
      ,
      
        sizeof
      
      (buf)-
      
        1
      
      
        ,argc);
      
      
        165
      
           buf[len++] = 
      
        '
      
      
        \r
      
      
        '
      
      
        ;
      
      
        166
      
           buf[len++] = 
      
        '
      
      
        \n
      
      
        '
      
      
        ;
      
      
        167
      
           dst =
      
         sdscatlen(dst,buf,len);
      
      
        168
      
      
        169
      
      
        for
      
       (j = 
      
        0
      
      ; j < argc; j++
      
        ) {
      
      
        170
      
               o =
      
         getDecodedObject(argv[j]);
      
      
        171
      
               buf[
      
        0
      
      ] = 
      
        '
      
      
        $
      
      
        '
      
      
        ;
      
      
        172
      
               len = 
      
        1
      
      +ll2string(buf+
      
        1
      
      ,
      
        sizeof
      
      (buf)-
      
        1
      
      ,sdslen(o->
      
        ptr));
      
      
        173
      
               buf[len++] = 
      
        '
      
      
        \r
      
      
        '
      
      
        ;
      
      
        174
      
               buf[len++] = 
      
        '
      
      
        \n
      
      
        '
      
      
        ;
      
      
        175
      
               dst =
      
         sdscatlen(dst,buf,len);
      
      
        176
      
               dst = sdscatlen(dst,o->ptr,sdslen(o->
      
        ptr));
      
      
        177
      
               dst = sdscatlen(dst,
      
        "
      
      
        \r\n
      
      
        "
      
      ,
      
        2
      
      
        );
      
      
        178
      
      
                decrRefCount(o);
      
      
        179
      
      
            }
      
      
        180
      
      
        return
      
      
         dst;
      
      
        181
      
      
        }
      
      
        182
      
      
        183
      
       sds catAppendOnlyExpireAtCommand(sds buf, robj *key, robj *
      
        seconds) {
      
      
        184
      
      
        int
      
       argc = 
      
        3
      
      
        ;
      
      
        185
      
      
        long
      
      
         when;
      
      
        186
      
           robj *argv[
      
        3
      
      
        ];
      
      
        187
      
      
        188
      
      
        /*
      
      
         Make sure we can use strtol 
      
      
        */
      
      
        189
      
           seconds =
      
         getDecodedObject(seconds);
      
      
        190
      
           when = time(NULL)+strtol(seconds->ptr,NULL,
      
        10
      
      
        );
      
      
        191
      
      
            decrRefCount(seconds);
      
      
        192
      
      
        193
      
           argv[
      
        0
      
      ] = createStringObject(
      
        "
      
      
        EXPIREAT
      
      
        "
      
      ,
      
        8
      
      
        );
      
      
        194
      
           argv[
      
        1
      
      ] =
      
         key;
      
      
        195
      
           argv[
      
        2
      
      ] =
      
         createObject(REDIS_STRING,
      
      
        196
      
               sdscatprintf(sdsempty(),
      
        "
      
      
        %ld
      
      
        "
      
      
        ,when));
      
      
        197
      
           buf =
      
         catAppendOnlyGenericCommand(buf, argc, argv);
      
      
        198
      
           decrRefCount(argv[
      
        0
      
      
        ]);
      
      
        199
      
           decrRefCount(argv[
      
        2
      
      
        ]);
      
      
        200
      
      
        return
      
      
         buf;
      
      
        201
      
      
        }
      
      
        202
      
      
        203
      
      
        void
      
       feedAppendOnlyFile(
      
        struct
      
       redisCommand *cmd, 
      
        int
      
       dictid, robj **argv, 
      
        int
      
      
         argc) {
      
      
        204
      
           sds buf =
      
         sdsempty();
      
      
        205
      
           robj *tmpargv[
      
        3
      
      
        ];
      
      
        206
      
      
        207
      
      
        /*
      
      
         The DB this command was targetting is not the same as the last command
      
      
        208
      
      
             * we appendend. To issue a SELECT command is needed. 
      
      
        */
      
      
        209
      
      
        if
      
       (dictid !=
      
         server.appendseldb) {
      
      
        210
      
      
        char
      
       seldb[
      
        64
      
      
        ];
      
      
        211
      
      
        212
      
               snprintf(seldb,
      
        sizeof
      
      (seldb),
      
        "
      
      
        %d
      
      
        "
      
      
        ,dictid);
      
      
        213
      
               buf = sdscatprintf(buf,
      
        "
      
      
        *2\r\n$6\r\nSELECT\r\n$%lu\r\n%s\r\n
      
      
        "
      
      
        ,
      
      
        214
      
                   (unsigned 
      
        long
      
      
        )strlen(seldb),seldb);
      
      
        215
      
               server.appendseldb =
      
         dictid;
      
      
        216
      
      
            }
      
      
        217
      
      
        218
      
      
        if
      
       (cmd->proc ==
      
         expireCommand) {
      
      
        219
      
      
        /*
      
      
         Translate EXPIRE into EXPIREAT 
      
      
        */
      
      
        220
      
               buf = catAppendOnlyExpireAtCommand(buf,argv[
      
        1
      
      ],argv[
      
        2
      
      
        ]);
      
      
        221
      
           } 
      
        else
      
      
        if
      
       (cmd->proc ==
      
         setexCommand) {
      
      
        222
      
      
        /*
      
      
         Translate SETEX to SET and EXPIREAT 
      
      
        */
      
      
        223
      
               tmpargv[
      
        0
      
      ] = createStringObject(
      
        "
      
      
        SET
      
      
        "
      
      ,
      
        3
      
      
        );
      
      
        224
      
               tmpargv[
      
        1
      
      ] = argv[
      
        1
      
      
        ];
      
      
        225
      
               tmpargv[
      
        2
      
      ] = argv[
      
        3
      
      
        ];
      
      
        226
      
               buf = catAppendOnlyGenericCommand(buf,
      
        3
      
      
        ,tmpargv);
      
      
        227
      
               decrRefCount(tmpargv[
      
        0
      
      
        ]);
      
      
        228
      
               buf = catAppendOnlyExpireAtCommand(buf,argv[
      
        1
      
      ],argv[
      
        2
      
      
        ]);
      
      
        229
      
           } 
      
        else
      
      
         {
      
      
        230
      
               buf =
      
         catAppendOnlyGenericCommand(buf,argc,argv);
      
      
        231
      
      
            }
      
      
        232
      
      
        233
      
      
        /*
      
      
         Append to the AOF buffer. This will be flushed on disk just before
      
      
        234
      
      
             * of re-entering the event loop, so before the client will get a
      
      
        235
      
      
             * positive reply about the operation performed. 
      
      
        */
      
      
        236
      
           server.aofbuf =
      
         sdscatlen(server.aofbuf,buf,sdslen(buf));
      
      
        237
      
      
        238
      
      
        /*
      
      
         If a background append only file rewriting is in progress we want to
      
      
        239
      
      
             * accumulate the differences between the child DB and the current one
      
      
        240
      
      
             * in a buffer, so that when the child process will do its work we
      
      
        241
      
      
             * can append the differences to the new append only file. 
      
      
        */
      
      
        242
      
      
        if
      
       (server.bgrewritechildpid != -
      
        1
      
      
        )
      
      
        243
      
               server.bgrewritebuf =
      
         sdscatlen(server.bgrewritebuf,buf,sdslen(buf));
      
      
        244
      
      
        245
      
      
            sdsfree(buf);
      
      
        246
      
      
        }
      
      
        247
      
      
        248
      
      
        /*
      
      
         In Redis commands are always executed in the context of a client, so in
      
      
        249
      
      
         * order to load the append only file we need to create a fake client. 
      
      
        */
      
      
        250
      
      
        struct
      
       redisClient *createFakeClient(
      
        void
      
      
        ) {
      
      
        251
      
      
        struct
      
       redisClient *c = zmalloc(
      
        sizeof
      
      (*
      
        c));
      
      
        252
      
      
        253
      
           selectDb(c,
      
        0
      
      
        );
      
      
        254
      
           c->fd = -
      
        1
      
      
        ;
      
      
        255
      
           c->querybuf =
      
         sdsempty();
      
      
        256
      
           c->argc = 
      
        0
      
      
        ;
      
      
        257
      
           c->argv =
      
         NULL;
      
      
        258
      
           c->bufpos = 
      
        0
      
      
        ;
      
      
        259
      
           c->flags = 
      
        0
      
      
        ;
      
      
        260
      
      
        /*
      
      
         We set the fake client as a slave waiting for the synchronization
      
      
        261
      
      
             * so that Redis will not try to send replies to this client. 
      
      
        */
      
      
        262
      
           c->replstate =
      
         REDIS_REPL_WAIT_BGSAVE_START;
      
      
        263
      
           c->reply =
      
         listCreate();
      
      
        264
      
           c->reply_bytes = 
      
        0
      
      
        ;
      
      
        265
      
           c->watched_keys =
      
         listCreate();
      
      
        266
      
           listSetFreeMethod(c->
      
        reply,decrRefCount);
      
      
        267
      
           listSetDupMethod(c->
      
        reply,dupClientReplyValue);
      
      
        268
      
      
            initClientMultiState(c);
      
      
        269
      
      
        return
      
      
         c;
      
      
        270
      
      
        }
      
      
        271
      
      
        272
      
      
        void
      
       freeFakeClient(
      
        struct
      
       redisClient *
      
        c) {
      
      
        273
      
           sdsfree(c->
      
        querybuf);
      
      
        274
      
           listRelease(c->
      
        reply);
      
      
        275
      
           listRelease(c->
      
        watched_keys);
      
      
        276
      
      
            freeClientMultiState(c);
      
      
        277
      
      
            zfree(c);
      
      
        278
      
      
        }
      
      
        279
      
      
        280
      
      
        /*
      
      
         Replay the append log file. On error REDIS_OK is returned. On non fatal
      
      
        281
      
      
         * error (the append only file is zero-length) REDIS_ERR is returned. On
      
      
        282
      
      
         * fatal error an error message is logged and the program exists. 
      
      
        */
      
      
        283
      
      
        int
      
       loadAppendOnlyFile(
      
        char
      
       *
      
        filename) {
      
      
        284
      
      
        struct
      
       redisClient *
      
        fakeClient;
      
      
        285
      
           FILE *fp = fopen(filename,
      
        "
      
      
        r
      
      
        "
      
      
        );
      
      
        286
      
      
        struct
      
      
         redis_stat sb;
      
      
        287
      
      
        int
      
       appendonly =
      
         server.appendonly;
      
      
        288
      
      
        long
      
       loops = 
      
        0
      
      
        ;
      
      
        289
      
      
        290
      
      
        if
      
       (fp && redis_fstat(fileno(fp),&sb) != -
      
        1
      
       && sb.st_size == 
      
        0
      
      
        ) {
      
      
        291
      
               server.appendonly_current_size = 
      
        0
      
      
        ;
      
      
        292
      
      
                fclose(fp);
      
      
        293
      
      
        return
      
      
         REDIS_ERR;
      
      
        294
      
      
            }
      
      
        295
      
      
        296
      
      
        if
      
       (fp ==
      
         NULL) {
      
      
        297
      
               redisLog(REDIS_WARNING,
      
        "
      
      
        Fatal error: can't open the append log file for reading: %s
      
      
        "
      
      
        ,strerror(errno));
      
      
        298
      
               exit(
      
        1
      
      
        );
      
      
        299
      
      
            }
      
      
        300
      
      
        301
      
      
        /*
      
      
         Temporarily disable AOF, to prevent EXEC from feeding a MULTI
      
      
        302
      
      
             * to the same file we're about to read. 
      
      
        */
      
      
        303
      
           server.appendonly = 
      
        0
      
      
        ;
      
      
        304
      
      
        305
      
           fakeClient =
      
         createFakeClient();
      
      
        306
      
      
            startLoading(fp);
      
      
        307
      
      
        308
      
      
        while
      
      (
      
        1
      
      
        ) {
      
      
        309
      
      
        int
      
      
         argc, j;
      
      
        310
      
               unsigned 
      
        long
      
      
         len;
      
      
        311
      
               robj **
      
        argv;
      
      
        312
      
      
        char
      
       buf[
      
        128
      
      
        ];
      
      
        313
      
      
                sds argsds;
      
      
        314
      
      
        struct
      
       redisCommand *
      
        cmd;
      
      
        315
      
      
        int
      
      
         force_swapout;
      
      
        316
      
      
        317
      
      
        /*
      
      
         Serve the clients from time to time 
      
      
        */
      
      
        318
      
      
        if
      
       (!(loops++ % 
      
        1000
      
      
        )) {
      
      
        319
      
      
                    loadingProgress(ftello(fp));
      
      
        320
      
                   aeProcessEvents(server.el, AE_FILE_EVENTS|
      
        AE_DONT_WAIT);
      
      
        321
      
      
                }
      
      
        322
      
      
        323
      
      
        if
      
       (fgets(buf,
      
        sizeof
      
      (buf),fp) ==
      
         NULL) {
      
      
        324
      
      
        if
      
      
         (feof(fp))
      
      
        325
      
      
        break
      
      
        ;
      
      
        326
      
      
        else
      
      
        327
      
      
        goto
      
      
         readerr;
      
      
        328
      
      
                }
      
      
        329
      
      
        if
      
       (buf[
      
        0
      
      ] != 
      
        '
      
      
        *
      
      
        '
      
      ) 
      
        goto
      
      
         fmterr;
      
      
        330
      
               argc = atoi(buf+
      
        1
      
      
        );
      
      
        331
      
      
        if
      
       (argc < 
      
        1
      
      ) 
      
        goto
      
      
         fmterr;
      
      
        332
      
      
        333
      
               argv = zmalloc(
      
        sizeof
      
      (robj*)*
      
        argc);
      
      
        334
      
      
        for
      
       (j = 
      
        0
      
      ; j < argc; j++
      
        ) {
      
      
        335
      
      
        if
      
       (fgets(buf,
      
        sizeof
      
      (buf),fp) == NULL) 
      
        goto
      
      
         readerr;
      
      
        336
      
      
        if
      
       (buf[
      
        0
      
      ] != 
      
        '
      
      
        $
      
      
        '
      
      ) 
      
        goto
      
      
         fmterr;
      
      
        337
      
                   len = strtol(buf+
      
        1
      
      ,NULL,
      
        10
      
      
        );
      
      
        338
      
                   argsds =
      
         sdsnewlen(NULL,len);
      
      
        339
      
      
        if
      
       (len && fread(argsds,len,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         fmterr;
      
      
        340
      
                   argv[j] =
      
         createObject(REDIS_STRING,argsds);
      
      
        341
      
      
        if
      
       (fread(buf,
      
        2
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
       fmterr; 
      
        /*
      
      
         discard CRLF 
      
      
        */
      
      
        342
      
      
                }
      
      
        343
      
      
        344
      
      
        /*
      
      
         Command lookup 
      
      
        */
      
      
        345
      
               cmd = lookupCommand(argv[
      
        0
      
      ]->
      
        ptr);
      
      
        346
      
      
        if
      
       (!
      
        cmd) {
      
      
        347
      
                   redisLog(REDIS_WARNING,
      
        "
      
      
        Unknown command '%s' reading the append only file
      
      
        "
      
      , argv[
      
        0
      
      ]->
      
        ptr);
      
      
        348
      
                   exit(
      
        1
      
      
        );
      
      
        349
      
      
                }
      
      
        350
      
      
        /*
      
      
         Run the command in the context of a fake client 
      
      
        */
      
      
        351
      
               fakeClient->argc =
      
         argc;
      
      
        352
      
               fakeClient->argv =
      
         argv;
      
      
        353
      
               cmd->
      
        proc(fakeClient);
      
      
        354
      
      
        355
      
      
        /*
      
      
         The fake client should not have a reply 
      
      
        */
      
      
        356
      
               redisAssert(fakeClient->bufpos == 
      
        0
      
       && listLength(fakeClient->reply) == 
      
        0
      
      
        );
      
      
        357
      
      
        /*
      
      
         The fake client should never get blocked 
      
      
        */
      
      
        358
      
               redisAssert((fakeClient->flags & REDIS_BLOCKED) == 
      
        0
      
      
        );
      
      
        359
      
      
        360
      
      
        /*
      
      
         Clean up. Command code may have changed argv/argc so we use the
      
      
        361
      
      
                 * argv/argc of the client instead of the local variables. 
      
      
        */
      
      
        362
      
      
        for
      
       (j = 
      
        0
      
      ; j < fakeClient->argc; j++
      
        )
      
      
        363
      
                   decrRefCount(fakeClient->
      
        argv[j]);
      
      
        364
      
               zfree(fakeClient->
      
        argv);
      
      
        365
      
      
        366
      
      
        /*
      
      
         Handle swapping while loading big datasets when VM is on 
      
      
        */
      
      
        367
      
               force_swapout = 
      
        0
      
      
        ;
      
      
        368
      
      
        if
      
       ((zmalloc_used_memory() - server.vm_max_memory) > 
      
        1024
      
      *
      
        1024
      
      *
      
        32
      
      
        )
      
      
        369
      
                   force_swapout = 
      
        1
      
      
        ;
      
      
        370
      
      
        371
      
      
        if
      
       (server.vm_enabled &&
      
         force_swapout) {
      
      
        372
      
      
        while
      
       (zmalloc_used_memory() >
      
         server.vm_max_memory) {
      
      
        373
      
      
        if
      
       (vmSwapOneObjectBlocking() == REDIS_ERR) 
      
        break
      
      
        ;
      
      
        374
      
      
                    }
      
      
        375
      
      
                }
      
      
        376
      
      
            }
      
      
        377
      
      
        378
      
      
        /*
      
      
         This point can only be reached when EOF is reached without errors.
      
      
        379
      
      
             * If the client is in the middle of a MULTI/EXEC, log error and quit. 
      
      
        */
      
      
        380
      
      
        if
      
       (fakeClient->flags & REDIS_MULTI) 
      
        goto
      
      
         readerr;
      
      
        381
      
      
        382
      
      
            fclose(fp);
      
      
        383
      
      
            freeFakeClient(fakeClient);
      
      
        384
      
           server.appendonly =
      
         appendonly;
      
      
        385
      
      
            stopLoading();
      
      
        386
      
      
            aofUpdateCurrentSize();
      
      
        387
      
           server.auto_aofrewrite_base_size =
      
         server.appendonly_current_size;
      
      
        388
      
      
        return
      
      
         REDIS_OK;
      
      
        389
      
      
        390
      
      
        readerr:
      
      
        391
      
      
        if
      
      
         (feof(fp)) {
      
      
        392
      
               redisLog(REDIS_WARNING,
      
        "
      
      
        Unexpected end of file reading the append only file
      
      
        "
      
      
        );
      
      
        393
      
           } 
      
        else
      
      
         {
      
      
        394
      
               redisLog(REDIS_WARNING,
      
        "
      
      
        Unrecoverable error reading the append only file: %s
      
      
        "
      
      
        , strerror(errno));
      
      
        395
      
      
            }
      
      
        396
      
           exit(
      
        1
      
      
        );
      
      
        397
      
      
        fmterr:
      
      
        398
      
           redisLog(REDIS_WARNING,
      
        "
      
      
        Bad file format reading the append only file: make a backup of your AOF file, then use ./redis-check-aof --fix <filename>
      
      
        "
      
      
        );
      
      
        399
      
           exit(
      
        1
      
      
        );
      
      
        400
      
      
        }
      
      
        401
      
      
        402
      
      
        /*
      
      
         Write a sequence of commands able to fully rebuild the dataset into
      
      
        403
      
      
         * "filename". Used both by REWRITEAOF and BGREWRITEAOF. 
      
      
        */
      
      
        404
      
      
        int
      
       rewriteAppendOnlyFile(
      
        char
      
       *
      
        filename) {
      
      
        405
      
           dictIterator *di =
      
         NULL;
      
      
        406
      
           dictEntry *
      
        de;
      
      
        407
      
           FILE *
      
        fp;
      
      
        408
      
      
        char
      
       tmpfile[
      
        256
      
      
        ];
      
      
        409
      
      
        int
      
      
         j;
      
      
        410
      
           time_t now =
      
         time(NULL);
      
      
        411
      
      
        412
      
      
        /*
      
      
         Note that we have to use a different temp name here compared to the
      
      
        413
      
      
             * one used by rewriteAppendOnlyFileBackground() function. 
      
      
        */
      
      
        414
      
           snprintf(tmpfile,
      
        256
      
      ,
      
        "
      
      
        temp-rewriteaof-%d.aof
      
      
        "
      
      , (
      
        int
      
      
        ) getpid());
      
      
        415
      
           fp = fopen(tmpfile,
      
        "
      
      
        w
      
      
        "
      
      
        );
      
      
        416
      
      
        if
      
       (!
      
        fp) {
      
      
        417
      
               redisLog(REDIS_WARNING, 
      
        "
      
      
        Failed rewriting the append only file: %s
      
      
        "
      
      
        , strerror(errno));
      
      
        418
      
      
        return
      
      
         REDIS_ERR;
      
      
        419
      
      
            }
      
      
        420
      
      
        for
      
       (j = 
      
        0
      
      ; j < server.dbnum; j++
      
        ) {
      
      
        421
      
      
        char
      
       selectcmd[] = 
      
        "
      
      
        *2\r\n$6\r\nSELECT\r\n
      
      
        "
      
      
        ;
      
      
        422
      
               redisDb *db = server.db+
      
        j;
      
      
        423
      
               dict *d = db->
      
        dict;
      
      
        424
      
      
        if
      
       (dictSize(d) == 
      
        0
      
      ) 
      
        continue
      
      
        ;
      
      
        425
      
               di =
      
         dictGetSafeIterator(d);
      
      
        426
      
      
        if
      
       (!
      
        di) {
      
      
        427
      
      
                    fclose(fp);
      
      
        428
      
      
        return
      
      
         REDIS_ERR;
      
      
        429
      
      
                }
      
      
        430
      
      
        431
      
      
        /*
      
      
         SELECT the new DB 
      
      
        */
      
      
        432
      
      
        if
      
       (fwrite(selectcmd,
      
        sizeof
      
      (selectcmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        433
      
      
        if
      
       (fwriteBulkLongLong(fp,j) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        434
      
      
        435
      
      
        /*
      
      
         Iterate this DB writing every entry 
      
      
        */
      
      
        436
      
      
        while
      
      ((de = dictNext(di)) !=
      
         NULL) {
      
      
        437
      
                   sds keystr =
      
         dictGetEntryKey(de);
      
      
        438
      
                   robj key, *
      
        o;
      
      
        439
      
      
                    time_t expiretime;
      
      
        440
      
      
        int
      
      
         swapped;
      
      
        441
      
      
        442
      
                   keystr =
      
         dictGetEntryKey(de);
      
      
        443
      
                   o =
      
         dictGetEntryVal(de);
      
      
        444
      
      
                    initStaticStringObject(key,keystr);
      
      
        445
      
      
        /*
      
      
         If the value for this key is swapped, load a preview in memory.
      
      
        446
      
      
                     * We use a "swapped" flag to remember if we need to free the
      
      
        447
      
      
                     * value object instead to just increment the ref count anyway
      
      
        448
      
      
                     * in order to avoid copy-on-write of pages if we are forked() 
      
      
        */
      
      
        449
      
      
        if
      
       (!server.vm_enabled || o->storage == REDIS_VM_MEMORY ||
      
        450
      
                       o->storage ==
      
         REDIS_VM_SWAPPING) {
      
      
        451
      
                       swapped = 
      
        0
      
      
        ;
      
      
        452
      
                   } 
      
        else
      
      
         {
      
      
        453
      
                       o =
      
         vmPreviewObject(o);
      
      
        454
      
                       swapped = 
      
        1
      
      
        ;
      
      
        455
      
      
                    }
      
      
        456
      
                   expiretime = getExpire(db,&
      
        key);
      
      
        457
      
      
        458
      
      
        /*
      
      
         Save the key and associated value 
      
      
        */
      
      
        459
      
      
        if
      
       (o->type ==
      
         REDIS_STRING) {
      
      
        460
      
      
        /*
      
      
         Emit a SET command 
      
      
        */
      
      
        461
      
      
        char
      
       cmd[]=
      
        "
      
      
        *3\r\n$3\r\nSET\r\n
      
      
        "
      
      
        ;
      
      
        462
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        463
      
      
        /*
      
      
         Key and value 
      
      
        */
      
      
        464
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        465
      
      
        if
      
       (fwriteBulkObject(fp,o) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        466
      
                   } 
      
        else
      
      
        if
      
       (o->type ==
      
         REDIS_LIST) {
      
      
        467
      
      
        /*
      
      
         Emit the RPUSHes needed to rebuild the list 
      
      
        */
      
      
        468
      
      
        char
      
       cmd[]=
      
        "
      
      
        *3\r\n$5\r\nRPUSH\r\n
      
      
        "
      
      
        ;
      
      
        469
      
      
        if
      
       (o->encoding ==
      
         REDIS_ENCODING_ZIPLIST) {
      
      
        470
      
                           unsigned 
      
        char
      
       *zl = o->
      
        ptr;
      
      
        471
      
                           unsigned 
      
        char
      
       *p = ziplistIndex(zl,
      
        0
      
      
        );
      
      
        472
      
                           unsigned 
      
        char
      
       *
      
        vstr;
      
      
        473
      
                           unsigned 
      
        int
      
      
         vlen;
      
      
        474
      
      
        long
      
      
        long
      
      
         vlong;
      
      
        475
      
      
        476
      
      
        while
      
      (ziplistGet(p,&vstr,&vlen,&
      
        vlong)) {
      
      
        477
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        478
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        479
      
      
        if
      
      
         (vstr) {
      
      
        480
      
      
        if
      
       (fwriteBulkString(fp,(
      
        char
      
      *)vstr,vlen) == 
      
        0
      
      
        )
      
      
        481
      
      
        goto
      
      
         werr;
      
      
        482
      
                               } 
      
        else
      
      
         {
      
      
        483
      
      
        if
      
       (fwriteBulkLongLong(fp,vlong) == 
      
        0
      
      
        )
      
      
        484
      
      
        goto
      
      
         werr;
      
      
        485
      
      
                                }
      
      
        486
      
                               p =
      
         ziplistNext(zl,p);
      
      
        487
      
      
                            }
      
      
        488
      
                       } 
      
        else
      
      
        if
      
       (o->encoding ==
      
         REDIS_ENCODING_LINKEDLIST) {
      
      
        489
      
                           list *list = o->
      
        ptr;
      
      
        490
      
                           listNode *
      
        ln;
      
      
        491
      
      
                            listIter li;
      
      
        492
      
      
        493
      
                           listRewind(list,&
      
        li);
      
      
        494
      
      
        while
      
      ((ln = listNext(&
      
        li))) {
      
      
        495
      
                               robj *eleobj =
      
         listNodeValue(ln);
      
      
        496
      
      
        497
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        498
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        499
      
      
        if
      
       (fwriteBulkObject(fp,eleobj) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        500
      
      
                            }
      
      
        501
      
                       } 
      
        else
      
      
         {
      
      
        502
      
                           redisPanic(
      
        "
      
      
        Unknown list encoding
      
      
        "
      
      
        );
      
      
        503
      
      
                        }
      
      
        504
      
                   } 
      
        else
      
      
        if
      
       (o->type ==
      
         REDIS_SET) {
      
      
        505
      
      
        char
      
       cmd[]=
      
        "
      
      
        *3\r\n$4\r\nSADD\r\n
      
      
        "
      
      
        ;
      
      
        506
      
      
        507
      
      
        /*
      
      
         Emit the SADDs needed to rebuild the set 
      
      
        */
      
      
        508
      
      
        if
      
       (o->encoding ==
      
         REDIS_ENCODING_INTSET) {
      
      
        509
      
      
        int
      
       ii = 
      
        0
      
      
        ;
      
      
        510
      
      
                            int64_t llval;
      
      
        511
      
      
        while
      
      (intsetGet(o->ptr,ii++,&
      
        llval)) {
      
      
        512
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        513
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        514
      
      
        if
      
       (fwriteBulkLongLong(fp,llval) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        515
      
      
                            }
      
      
        516
      
                       } 
      
        else
      
      
        if
      
       (o->encoding ==
      
         REDIS_ENCODING_HT) {
      
      
        517
      
                           dictIterator *di = dictGetIterator(o->
      
        ptr);
      
      
        518
      
                           dictEntry *
      
        de;
      
      
        519
      
      
        while
      
      ((de = dictNext(di)) !=
      
         NULL) {
      
      
        520
      
                               robj *eleobj =
      
         dictGetEntryKey(de);
      
      
        521
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        522
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        523
      
      
        if
      
       (fwriteBulkObject(fp,eleobj) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        524
      
      
                            }
      
      
        525
      
      
                            dictReleaseIterator(di);
      
      
        526
      
                       } 
      
        else
      
      
         {
      
      
        527
      
                           redisPanic(
      
        "
      
      
        Unknown set encoding
      
      
        "
      
      
        );
      
      
        528
      
      
                        }
      
      
        529
      
                   } 
      
        else
      
      
        if
      
       (o->type ==
      
         REDIS_ZSET) {
      
      
        530
      
      
        /*
      
      
         Emit the ZADDs needed to rebuild the sorted set 
      
      
        */
      
      
        531
      
      
        char
      
       cmd[]=
      
        "
      
      
        *4\r\n$4\r\nZADD\r\n
      
      
        "
      
      
        ;
      
      
        532
      
      
        533
      
      
        if
      
       (o->encoding ==
      
         REDIS_ENCODING_ZIPLIST) {
      
      
        534
      
                           unsigned 
      
        char
      
       *zl = o->
      
        ptr;
      
      
        535
      
                           unsigned 
      
        char
      
       *eptr, *
      
        sptr;
      
      
        536
      
                           unsigned 
      
        char
      
       *
      
        vstr;
      
      
        537
      
                           unsigned 
      
        int
      
      
         vlen;
      
      
        538
      
      
        long
      
      
        long
      
      
         vll;
      
      
        539
      
      
        double
      
      
         score;
      
      
        540
      
      
        541
      
                           eptr = ziplistIndex(zl,
      
        0
      
      
        );
      
      
        542
      
                           redisAssert(eptr !=
      
         NULL);
      
      
        543
      
                           sptr =
      
         ziplistNext(zl,eptr);
      
      
        544
      
                           redisAssert(sptr !=
      
         NULL);
      
      
        545
      
      
        546
      
      
        while
      
       (eptr !=
      
         NULL) {
      
      
        547
      
                               redisAssert(ziplistGet(eptr,&vstr,&vlen,&
      
        vll));
      
      
        548
      
                               score =
      
         zzlGetScore(sptr);
      
      
        549
      
      
        550
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        551
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        552
      
      
        if
      
       (fwriteBulkDouble(fp,score) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        553
      
      
        if
      
       (vstr !=
      
         NULL) {
      
      
        554
      
      
        if
      
       (fwriteBulkString(fp,(
      
        char
      
      *)vstr,vlen) == 
      
        0
      
      
        )
      
      
        555
      
      
        goto
      
      
         werr;
      
      
        556
      
                               } 
      
        else
      
      
         {
      
      
        557
      
      
        if
      
       (fwriteBulkLongLong(fp,vll) == 
      
        0
      
      
        )
      
      
        558
      
      
        goto
      
      
         werr;
      
      
        559
      
      
                                }
      
      
        560
      
                               zzlNext(zl,&eptr,&
      
        sptr);
      
      
        561
      
      
                            }
      
      
        562
      
                       } 
      
        else
      
      
        if
      
       (o->encoding ==
      
         REDIS_ENCODING_SKIPLIST) {
      
      
        563
      
                           zset *zs = o->
      
        ptr;
      
      
        564
      
                           dictIterator *di = dictGetIterator(zs->
      
        dict);
      
      
        565
      
                           dictEntry *
      
        de;
      
      
        566
      
      
        567
      
      
        while
      
      ((de = dictNext(di)) !=
      
         NULL) {
      
      
        568
      
                               robj *eleobj =
      
         dictGetEntryKey(de);
      
      
        569
      
      
        double
      
       *score =
      
         dictGetEntryVal(de);
      
      
        570
      
      
        571
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        572
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        573
      
      
        if
      
       (fwriteBulkDouble(fp,*score) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        574
      
      
        if
      
       (fwriteBulkObject(fp,eleobj) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        575
      
      
                            }
      
      
        576
      
      
                            dictReleaseIterator(di);
      
      
        577
      
                       } 
      
        else
      
      
         {
      
      
        578
      
                           redisPanic(
      
        "
      
      
        Unknown sorted set encoding
      
      
        "
      
      
        );
      
      
        579
      
      
                        }
      
      
        580
      
                   } 
      
        else
      
      
        if
      
       (o->type ==
      
         REDIS_HASH) {
      
      
        581
      
      
        char
      
       cmd[]=
      
        "
      
      
        *4\r\n$4\r\nHSET\r\n
      
      
        "
      
      
        ;
      
      
        582
      
      
        583
      
      
        /*
      
      
         Emit the HSETs needed to rebuild the hash 
      
      
        */
      
      
        584
      
      
        if
      
       (o->encoding ==
      
         REDIS_ENCODING_ZIPMAP) {
      
      
        585
      
                           unsigned 
      
        char
      
       *p = zipmapRewind(o->
      
        ptr);
      
      
        586
      
                           unsigned 
      
        char
      
       *field, *
      
        val;
      
      
        587
      
                           unsigned 
      
        int
      
      
         flen, vlen;
      
      
        588
      
      
        589
      
      
        while
      
      ((p = zipmapNext(p,&field,&flen,&val,&vlen)) !=
      
         NULL) {
      
      
        590
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        591
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        592
      
      
        if
      
       (fwriteBulkString(fp,(
      
        char
      
      *)field,flen) == 
      
        0
      
      
        )
      
      
        593
      
      
        goto
      
      
         werr;
      
      
        594
      
      
        if
      
       (fwriteBulkString(fp,(
      
        char
      
      *)val,vlen) == 
      
        0
      
      
        )
      
      
        595
      
      
        goto
      
      
         werr;
      
      
        596
      
      
                            }
      
      
        597
      
                       } 
      
        else
      
      
         {
      
      
        598
      
                           dictIterator *di = dictGetIterator(o->
      
        ptr);
      
      
        599
      
                           dictEntry *
      
        de;
      
      
        600
      
      
        601
      
      
        while
      
      ((de = dictNext(di)) !=
      
         NULL) {
      
      
        602
      
                               robj *field =
      
         dictGetEntryKey(de);
      
      
        603
      
                               robj *val =
      
         dictGetEntryVal(de);
      
      
        604
      
      
        605
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        606
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        607
      
      
        if
      
       (fwriteBulkObject(fp,field) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        608
      
      
        if
      
       (fwriteBulkObject(fp,val) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        609
      
      
                            }
      
      
        610
      
      
                            dictReleaseIterator(di);
      
      
        611
      
      
                        }
      
      
        612
      
                   } 
      
        else
      
      
         {
      
      
        613
      
                       redisPanic(
      
        "
      
      
        Unknown object type
      
      
        "
      
      
        );
      
      
        614
      
      
                    }
      
      
        615
      
      
        /*
      
      
         Save the expire time 
      
      
        */
      
      
        616
      
      
        if
      
       (expiretime != -
      
        1
      
      
        ) {
      
      
        617
      
      
        char
      
       cmd[]=
      
        "
      
      
        *3\r\n$8\r\nEXPIREAT\r\n
      
      
        "
      
      
        ;
      
      
        618
      
      
        /*
      
      
         If this key is already expired skip it 
      
      
        */
      
      
        619
      
      
        if
      
       (expiretime < now) 
      
        continue
      
      
        ;
      
      
        620
      
      
        if
      
       (fwrite(cmd,
      
        sizeof
      
      (cmd)-
      
        1
      
      ,
      
        1
      
      ,fp) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        621
      
      
        if
      
       (fwriteBulkObject(fp,&key) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        622
      
      
        if
      
       (fwriteBulkLongLong(fp,expiretime) == 
      
        0
      
      ) 
      
        goto
      
      
         werr;
      
      
        623
      
      
                    }
      
      
        624
      
      
        if
      
      
         (swapped) decrRefCount(o);
      
      
        625
      
      
                }
      
      
        626
      
      
                dictReleaseIterator(di);
      
      
        627
      
      
            }
      
      
        628
      
      
        629
      
      
        /*
      
      
         Make sure data will not remain on the OS's output buffers 
      
      
        */
      
      
        630
      
      
            fflush(fp);
      
      
        631
      
      
            aof_fsync(fileno(fp));
      
      
        632
      
      
            fclose(fp);
      
      
        633
      
      
        634
      
      
        /*
      
      
         Use RENAME to make sure the DB file is changed atomically only
      
      
        635
      
      
             * if the generate DB file is ok. 
      
      
        */
      
      
        636
      
      
        if
      
       (rename(tmpfile,filename) == -
      
        1
      
      
        ) {
      
      
        637
      
               redisLog(REDIS_WARNING,
      
        "
      
      
        Error moving temp append only file on the final destination: %s
      
      
        "
      
      
        , strerror(errno));
      
      
        638
      
      
                unlink(tmpfile);
      
      
        639
      
      
        return
      
      
         REDIS_ERR;
      
      
        640
      
      
            }
      
      
        641
      
           redisLog(REDIS_NOTICE,
      
        "
      
      
        SYNC append only file rewrite performed
      
      
        "
      
      
        );
      
      
        642
      
      
        return
      
      
         REDIS_OK;
      
      
        643
      
      
        644
      
      
        werr:
      
      
        645
      
      
            fclose(fp);
      
      
        646
      
      
            unlink(tmpfile);
      
      
        647
      
           redisLog(REDIS_WARNING,
      
        "
      
      
        Write error writing append only file on disk: %s
      
      
        "
      
      
        , strerror(errno));
      
      
        648
      
      
        if
      
      
         (di) dictReleaseIterator(di);
      
      
        649
      
      
        return
      
      
         REDIS_ERR;
      
      
        650
      
      
        }
      
      
        651
      
      
        652
      
      
        /*
      
      
         This is how rewriting of the append only file in background works:
      
      
        653
      
      
         *
      
      
        654
      
      
         * 1) The user calls BGREWRITEAOF
      
      
        655
      
      
         * 2) Redis calls this function, that forks():
      
      
        656
      
      
         *    2a) the child rewrite the append only file in a temp file.
      
      
        657
      
      
         *    2b) the parent accumulates differences in server.bgrewritebuf.
      
      
        658
      
      
         * 3) When the child finished '2a' exists.
      
      
        659
      
      
         * 4) The parent will trap the exit code, if it's OK, will append the
      
      
        660
      
      
         *    data accumulated into server.bgrewritebuf into the temp file, and
      
      
        661
      
      
         *    finally will rename(2) the temp file in the actual file name.
      
      
        662
      
      
         *    The the new file is reopened as the new append only file. Profit!
      
      
        663
      
      
        */
      
      
        664
      
      
        int
      
       rewriteAppendOnlyFileBackground(
      
        void
      
      
        ) {
      
      
        665
      
      
            pid_t childpid;
      
      
        666
      
      
        long
      
      
        long
      
      
         start;
      
      
        667
      
      
        668
      
      
        if
      
       (server.bgrewritechildpid != -
      
        1
      
      ) 
      
        return
      
      
         REDIS_ERR;
      
      
        669
      
      
        if
      
      
         (server.vm_enabled) waitEmptyIOJobsQueue();
      
      
        670
      
           start =
      
         ustime();
      
      
        671
      
      
        if
      
       ((childpid = fork()) == 
      
        0
      
      
        ) {
      
      
        672
      
      
        char
      
       tmpfile[
      
        256
      
      
        ];
      
      
        673
      
      
        674
      
      
        /*
      
      
         Child 
      
      
        */
      
      
        675
      
      
        if
      
      
         (server.vm_enabled) vmReopenSwapFile();
      
      
        676
      
      
        if
      
       (server.ipfd > 
      
        0
      
      
        ) close(server.ipfd);
      
      
        677
      
      
        if
      
       (server.sofd > 
      
        0
      
      
        ) close(server.sofd);
      
      
        678
      
               snprintf(tmpfile,
      
        256
      
      ,
      
        "
      
      
        temp-rewriteaof-bg-%d.aof
      
      
        "
      
      , (
      
        int
      
      
        ) getpid());
      
      
        679
      
      
        if
      
       (rewriteAppendOnlyFile(tmpfile) ==
      
         REDIS_OK) {
      
      
        680
      
                   _exit(
      
        0
      
      
        );
      
      
        681
      
               } 
      
        else
      
      
         {
      
      
        682
      
                   _exit(
      
        1
      
      
        );
      
      
        683
      
      
                }
      
      
        684
      
           } 
      
        else
      
      
         {
      
      
        685
      
      
        /*
      
      
         Parent 
      
      
        */
      
      
        686
      
               server.stat_fork_time = ustime()-
      
        start;
      
      
        687
      
      
        if
      
       (childpid == -
      
        1
      
      
        ) {
      
      
        688
      
      
                    redisLog(REDIS_WARNING,
      
      
        689
      
      
        "
      
      
        Can't rewrite append only file in background: fork: %s
      
      
        "
      
      
        ,
      
      
        690
      
      
                        strerror(errno));
      
      
        691
      
      
        return
      
      
         REDIS_ERR;
      
      
        692
      
      
                }
      
      
        693
      
      
                redisLog(REDIS_NOTICE,
      
      
        694
      
      
        "
      
      
        Background append only file rewriting started by pid %d
      
      
        "
      
      
        ,childpid);
      
      
        695
      
               server.aofrewrite_scheduled = 
      
        0
      
      
        ;
      
      
        696
      
               server.bgrewritechildpid =
      
         childpid;
      
      
        697
      
      
                updateDictResizePolicy();
      
      
        698
      
      
        /*
      
      
         We set appendseldb to -1 in order to force the next call to the
      
      
        699
      
      
                 * feedAppendOnlyFile() to issue a SELECT command, so the differences
      
      
        700
      
      
                 * accumulated by the parent into server.bgrewritebuf will start
      
      
        701
      
      
                 * with a SELECT statement and it will be safe to merge. 
      
      
        */
      
      
        702
      
               server.appendseldb = -
      
        1
      
      
        ;
      
      
        703
      
      
        return
      
      
         REDIS_OK;
      
      
        704
      
      
            }
      
      
        705
      
      
        return
      
       REDIS_OK; 
      
        /*
      
      
         unreached 
      
      
        */
      
      
        706
      
      
        }
      
      
        707
      
      
        708
      
      
        void
      
       bgrewriteaofCommand(redisClient *
      
        c) {
      
      
        709
      
      
        if
      
       (server.bgrewritechildpid != -
      
        1
      
      
        ) {
      
      
        710
      
               addReplyError(c,
      
        "
      
      
        Background append only file rewriting already in progress
      
      
        "
      
      
        );
      
      
        711
      
           } 
      
        else
      
      
        if
      
       (server.bgsavechildpid != -
      
        1
      
      
        ) {
      
      
        712
      
               server.aofrewrite_scheduled = 
      
        1
      
      
        ;
      
      
        713
      
               addReplyStatus(c,
      
        "
      
      
        Background append only file rewriting scheduled
      
      
        "
      
      
        );
      
      
        714
      
           } 
      
        else
      
      
        if
      
       (rewriteAppendOnlyFileBackground() ==
      
         REDIS_OK) {
      
      
        715
      
               addReplyStatus(c,
      
        "
      
      
        Background append only file rewriting started
      
      
        "
      
      
        );
      
      
        716
      
           } 
      
        else
      
      
         {
      
      
        717
      
      
                addReply(c,shared.err);
      
      
        718
      
      
            }
      
      
        719
      
      
        }
      
      
        720
      
      
        721
      
      
        void
      
      
         aofRemoveTempFile(pid_t childpid) {
      
      
        722
      
      
        char
      
       tmpfile[
      
        256
      
      
        ];
      
      
        723
      
      
        724
      
           snprintf(tmpfile,
      
        256
      
      ,
      
        "
      
      
        temp-rewriteaof-bg-%d.aof
      
      
        "
      
      , (
      
        int
      
      
        ) childpid);
      
      
        725
      
      
            unlink(tmpfile);
      
      
        726
      
      
        }
      
      
        727
      
      
        728
      
      
        /*
      
      
         Update the server.appendonly_current_size filed explicitly using stat(2)
      
      
        729
      
      
         * to check the size of the file. This is useful after a rewrite or after
      
      
        730
      
      
         * a restart, normally the size is updated just adding the write length
      
      
        731
      
      
         * to the current lenght, that is much faster. 
      
      
        */
      
      
        732
      
      
        void
      
       aofUpdateCurrentSize(
      
        void
      
      
        ) {
      
      
        733
      
      
        struct
      
      
         redis_stat sb;
      
      
        734
      
      
        735
      
      
        if
      
       (redis_fstat(server.appendfd,&sb) == -
      
        1
      
      
        ) {
      
      
        736
      
               redisLog(REDIS_WARNING,
      
        "
      
      
        Unable to check the AOF length: %s
      
      
        "
      
      
        ,
      
      
        737
      
      
                    strerror(errno));
      
      
        738
      
           } 
      
        else
      
      
         {
      
      
        739
      
               server.appendonly_current_size =
      
         sb.st_size;
      
      
        740
      
      
            }
      
      
        741
      
      
        }
      
      
        742
      
      
        743
      
      
        /*
      
      
         A background append only file rewriting (BGREWRITEAOF) terminated its work.
      
      
        744
      
      
         * Handle this. 
      
      
        */
      
      
        745
      
      
        void
      
       backgroundRewriteDoneHandler(
      
        int
      
      
         statloc) {
      
      
        746
      
      
        int
      
       exitcode =
      
         WEXITSTATUS(statloc);
      
      
        747
      
      
        int
      
       bysignal =
      
         WIFSIGNALED(statloc);
      
      
        748
      
      
        749
      
      
        if
      
       (!bysignal && exitcode == 
      
        0
      
      
        ) {
      
      
        750
      
      
        int
      
      
         newfd, oldfd;
      
      
        751
      
      
        int
      
      
         nwritten;
      
      
        752
      
      
        char
      
       tmpfile[
      
        256
      
      
        ];
      
      
        753
      
      
        long
      
      
        long
      
       now =
      
         ustime();
      
      
        754
      
      
        755
      
      
                redisLog(REDIS_NOTICE,
      
      
        756
      
      
        "
      
      
        Background AOF rewrite terminated with success
      
      
        "
      
      
        );
      
      
        757
      
      
        758
      
      
        /*
      
      
         Flush the differences accumulated by the parent to the
      
      
        759
      
      
                 * rewritten AOF. 
      
      
        */
      
      
        760
      
               snprintf(tmpfile,
      
        256
      
      ,
      
        "
      
      
        temp-rewriteaof-bg-%d.aof
      
      
        "
      
      
        ,
      
      
        761
      
                   (
      
        int
      
      
        )server.bgrewritechildpid);
      
      
        762
      
               newfd = open(tmpfile,O_WRONLY|
      
        O_APPEND);
      
      
        763
      
      
        if
      
       (newfd == -
      
        1
      
      
        ) {
      
      
        764
      
      
                    redisLog(REDIS_WARNING,
      
      
        765
      
      
        "
      
      
        Unable to open the temporary AOF produced by the child: %s
      
      
        "
      
      
        , strerror(errno));
      
      
        766
      
      
        goto
      
      
         cleanup;
      
      
        767
      
      
                }
      
      
        768
      
      
        769
      
               nwritten =
      
         write(newfd,server.bgrewritebuf,sdslen(server.bgrewritebuf));
      
      
        770
      
      
        if
      
       (nwritten !=
      
         (signed)sdslen(server.bgrewritebuf)) {
      
      
        771
      
      
        if
      
       (nwritten == -
      
        1
      
      
        ) {
      
      
        772
      
      
                        redisLog(REDIS_WARNING,
      
      
        773
      
      
        "
      
      
        Error trying to flush the parent diff to the rewritten AOF: %s
      
      
        "
      
      
        , strerror(errno));
      
      
        774
      
                   } 
      
        else
      
      
         {
      
      
        775
      
      
                        redisLog(REDIS_WARNING,
      
      
        776
      
      
        "
      
      
        Short write trying to flush the parent diff to the rewritten AOF: %s
      
      
        "
      
      
        , strerror(errno));
      
      
        777
      
      
                    }
      
      
        778
      
      
                    close(newfd);
      
      
        779
      
      
        goto
      
      
         cleanup;
      
      
        780
      
      
                }
      
      
        781
      
      
        782
      
      
                redisLog(REDIS_NOTICE,
      
      
        783
      
      
        "
      
      
        Parent diff successfully flushed to the rewritten AOF (%lu bytes)
      
      
        "
      
      
        , nwritten);
      
      
        784
      
      
        785
      
      
        /*
      
      
         The only remaining thing to do is to rename the temporary file to
      
      
        786
      
      
                 * the configured file and switch the file descriptor used to do AOF
      
      
        787
      
      
                 * writes. We don't want close(2) or rename(2) calls to block the
      
      
        788
      
      
                 * server on old file deletion.
      
      
        789
      
      
                 *
      
      
        790
      
      
                 * There are two possible scenarios:
      
      
        791
      
      
                 *
      
      
        792
      
      
                 * 1) AOF is DISABLED and this was a one time rewrite. The temporary
      
      
        793
      
      
                 * file will be renamed to the configured file. When this file already
      
      
        794
      
      
                 * exists, it will be unlinked, which may block the server.
      
      
        795
      
      
                 *
      
      
        796
      
      
                 * 2) AOF is ENABLED and the rewritten AOF will immediately start
      
      
        797
      
      
                 * receiving writes. After the temporary file is renamed to the
      
      
        798
      
      
                 * configured file, the original AOF file descriptor will be closed.
      
      
        799
      
      
                 * Since this will be the last reference to that file, closing it
      
      
        800
      
      
                 * causes the underlying file to be unlinked, which may block the
      
      
        801
      
      
                 * server.
      
      
        802
      
      
                 *
      
      
        803
      
      
                 * To mitigate the blocking effect of the unlink operation (either
      
      
        804
      
      
                 * caused by rename(2) in scenario 1, or by close(2) in scenario 2), we
      
      
        805
      
      
                 * use a background thread to take care of this. First, we
      
      
        806
      
      
                 * make scenario 1 identical to scenario 2 by opening the target file
      
      
        807
      
      
                 * when it exists. The unlink operation after the rename(2) will then
      
      
        808
      
      
                 * be executed upon calling close(2) for its descriptor. Everything to
      
      
        809
      
      
                 * guarantee atomicity for this switch has already happened by then, so
      
      
        810
      
      
                 * we don't care what the outcome or duration of that close operation
      
      
        811
      
      
                 * is, as long as the file descriptor is released again. 
      
      
        */
      
      
        812
      
      
        if
      
       (server.appendfd == -
      
        1
      
      
        ) {
      
      
        813
      
      
        /*
      
      
         AOF disabled 
      
      
        */
      
      
        814
      
      
        815
      
      
        /*
      
      
         Don't care if this fails: oldfd will be -1 and we handle that.
      
      
        816
      
      
                      * One notable case of -1 return is if the old file does
      
      
        817
      
      
                      * not exist. 
      
      
        */
      
      
        818
      
                    oldfd = open(server.appendfilename,O_RDONLY|
      
        O_NONBLOCK);
      
      
        819
      
               } 
      
        else
      
      
         {
      
      
        820
      
      
        /*
      
      
         AOF enabled 
      
      
        */
      
      
        821
      
                   oldfd = -
      
        1
      
      ; 
      
        /*
      
      
         We'll set this to the current AOF filedes later. 
      
      
        */
      
      
        822
      
      
                }
      
      
        823
      
      
        824
      
      
        /*
      
      
         Rename the temporary file. This will not unlink the target file if
      
      
        825
      
      
                 * it exists, because we reference it with "oldfd". 
      
      
        */
      
      
        826
      
      
        if
      
       (rename(tmpfile,server.appendfilename) == -
      
        1
      
      
        ) {
      
      
        827
      
      
                    redisLog(REDIS_WARNING,
      
      
        828
      
      
        "
      
      
        Error trying to rename the temporary AOF: %s
      
      
        "
      
      
        , strerror(errno));
      
      
        829
      
      
                    close(newfd);
      
      
        830
      
      
        if
      
       (oldfd != -
      
        1
      
      
        ) close(oldfd);
      
      
        831
      
      
        goto
      
      
         cleanup;
      
      
        832
      
      
                }
      
      
        833
      
      
        834
      
      
        if
      
       (server.appendfd == -
      
        1
      
      
        ) {
      
      
        835
      
      
        /*
      
      
         AOF disabled, we don't need to set the AOF file descriptor
      
      
        836
      
      
                     * to this new file, so we can close it. 
      
      
        */
      
      
        837
      
      
                    close(newfd);
      
      
        838
      
               } 
      
        else
      
      
         {
      
      
        839
      
      
        /*
      
      
         AOF enabled, replace the old fd with the new one. 
      
      
        */
      
      
        840
      
                   oldfd =
      
         server.appendfd;
      
      
        841
      
                   server.appendfd =
      
         newfd;
      
      
        842
      
      
        if
      
       (server.appendfsync ==
      
         APPENDFSYNC_ALWAYS)
      
      
        843
      
      
                        aof_fsync(newfd);
      
      
        844
      
      
        else
      
      
        if
      
       (server.appendfsync ==
      
         APPENDFSYNC_EVERYSEC)
      
      
        845
      
      
                        aof_background_fsync(newfd);
      
      
        846
      
                   server.appendseldb = -
      
        1
      
      ; 
      
        /*
      
      
         Make sure SELECT is re-issued 
      
      
        */
      
      
        847
      
      
                    aofUpdateCurrentSize();
      
      
        848
      
                   server.auto_aofrewrite_base_size =
      
         server.appendonly_current_size;
      
      
        849
      
      
        850
      
      
        /*
      
      
         Clear regular AOF buffer since its contents was just written to
      
      
        851
      
      
                     * the new AOF from the background rewrite buffer. 
      
      
        */
      
      
        852
      
      
                    sdsfree(server.aofbuf);
      
      
        853
      
                   server.aofbuf =
      
         sdsempty();
      
      
        854
      
      
                }
      
      
        855
      
      
        856
      
               redisLog(REDIS_NOTICE, 
      
        "
      
      
        Background AOF rewrite successful
      
      
        "
      
      
        );
      
      
        857
      
      
        858
      
      
        /*
      
      
         Asynchronously close the overwritten AOF. 
      
      
        */
      
      
        859
      
      
        if
      
       (oldfd != -
      
        1
      
      ) bioCreateBackgroundJob(REDIS_BIO_CLOSE_FILE,(
      
        void
      
      *)(
      
        long
      
      
        )oldfd,NULL,NULL);
      
      
        860
      
      
        861
      
      
                redisLog(REDIS_VERBOSE,
      
      
        862
      
      
        "
      
      
        Background AOF rewrite signal handler took %lldus
      
      
        "
      
      , ustime()-
      
        now);
      
      
        863
      
           } 
      
        else
      
      
        if
      
       (!bysignal && exitcode != 
      
        0
      
      
        ) {
      
      
        864
      
      
                redisLog(REDIS_WARNING,
      
      
        865
      
      
        "
      
      
        Background AOF rewrite terminated with error
      
      
        "
      
      
        );
      
      
        866
      
           } 
      
        else
      
      
         {
      
      
        867
      
      
                redisLog(REDIS_WARNING,
      
      
        868
      
      
        "
      
      
        Background AOF rewrite terminated by signal %d
      
      
        "
      
      
        ,
      
      
        869
      
      
                    WTERMSIG(statloc));
      
      
        870
      
      
            }
      
      
        871
      
      
        872
      
      
        cleanup:
      
      
        873
      
      
            sdsfree(server.bgrewritebuf);
      
      
        874
      
           server.bgrewritebuf =
      
         sdsempty();
      
      
        875
      
      
            aofRemoveTempFile(server.bgrewritechildpid);
      
      
        876
      
           server.bgrewritechildpid = -
      
        1
      
      
        ;
      
      
        877
      
       }
    

redis源碼筆記 - aof


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久久久久久曰本精品免费看 | 亚洲综合天堂一区二区三区 | 日本精品一区二区三区在线观看视频 | 很黄很黄的曰批视频 | 亚洲午夜国产成人av电影 | 色香蕉av| 免费日韩在线视频 | 亚州成人 | 无码人妻精品一区二区三 | 18禁美女裸体免费网站 | 亚洲成人一二区 | 亚洲欧美另类激情综合区 | 亚洲国产精品婷婷 | 日韩人妻高清精品专区 | 一个色亚洲 | 爱爱毛片 | 久久精品免费 | 国产jjizz一区二区三区老人 | 亚洲色图一区二区 | 制服.丝袜.亚洲.中文.综合 | 无码国产精品高清免费 | 91精品久久久久久久久久另类 | 日本a v网站 | 国产精品白丝喷浆 | 日本精品午夜 | 久草一本 | 国产麻豆一区二区三区精品 | 人人看人人干 | 日本天天黄网站 | 欧美日韩视频无码一区二区三 | 夜间视频在线观看 | 亚洲国产拍拍拍拍久久久 | 国产精品99久久久久宅男软件功能 | 欧美一级xxxx | 亚洲精品综合在线影院 | 日韩中文字幕免费看 | 亚洲成av人影院在线观看 | 天天摸天天操天天干 | 国产裸体瑜伽xxx在线 | 国产又色又爽无遮挡免费 | 久精品在线观看 | 午夜精品喷水 | 夜夜躁很很躁日日躁2020铜川 | 精品国产综合成人亚洲区2022 | 国产精品成人免费一区二区视频 | 国产亚洲精品麻豆一区二区 | 国产高清视频在线观看69 | 久久精品一品道久久精品 | 99国产精品白浆在线观看免费 | 我爱avav色av爱avav亚洲 | 色一情一乱一伦一区二区三区 | 少妇翘臀亚洲精品av图片 | 国产精品盗摄!偷窥盗摄 | 国产麻豆精品av在线观看 | 狠狠色噜噜狠狠狠狠蜜桃 | 国产又粗又硬又猛的免费视频 | 国内一区二区三区香蕉aⅴ 国产精品久久久久9999高清 | 亚洲骚片 | 最新国产精品精品视频 视频 | 他干我色播 | 成本人片无码中文字幕免费 | 青青久热 | 日本在线播放 | 一级全黄色毛片 | 日韩精品人成在线播放 | 亚洲天天做日日做天天欢 | 日韩乱码人妻无码中文字幕久久 | 国产片av不卡在线观看国语 | 狠狠操夜夜操天天操 | 亚洲欧美偷拍另类 | 成人一级影片 | 五月天男人天堂 | 久久人人澡 | 久久夜色精品国产噜噜av | 狠狠操视频网站 | 天天草av| 久久com| 在线视频欧美日韩 | 久久久久蜜桃精品成人片公司 | 人妻系列无码一区二区三区 | 日操操| 韩国精品视频一区二区在线播放 | 中文字幕久久综合 | 亚洲成av人片不卡无码久久 | 日韩毛片在线视频 | 色综合a怡红院怡红院 | 丁香啪啪综合成人亚洲小说 | 午夜免费国产 | 人妻丰满熟妞av无码区 | 中文久久乱码一区二区 | 免费成人小视频 | 国产伊人av | 看免费的毛片 | 深夜激情影院 | 亚洲最大激情中文字幕 | 亚洲 日韩 国产 有码 不卡 | 亚洲小说区图片区另类春色 | 亚洲日韩欧美在线观看一区二区三区 | 欧美自拍亚洲综合在线 | 男人的天堂va | 国产偷亚洲偷欧美偷精品 | 国产tv在线观看 | 亚洲第一视频网站 | 最新在线精品国产福利 | 97在线精品视频免费 | 久久人妻少妇偷人精品综合桃色 | 国产高清成人免费视频在线观看 | 日本精品videossex 黑人 | 午夜精品久久久久久久99黑人 | 中文字幕一区二区三区乱码图片 | 天天爽狠狠噜天天噜日日噜 | 午夜久久视频 | 2021最新久久久视精品爱 | 亚洲欧洲无码一区二区三区 | 一本色道久久亚洲精品加勒比 | 国产精品欧美日韩在线 | 亚洲日本va中文字幕 | 精品久久久影院 | 手机看片1024久久 | 成人国产精品免费观看视频 | 天天摸天天爽日韩欧美大片 | 欧美高清视频一区二区三区 | 夜色视频网 | 四虎精品免费永久免费视频 | 日本三级吃奶头添泬 | 超碰在线97观看 | 亚洲国产精品久久艾草 | 精品一区二区三区无码av久久 | 92国产精品午夜福利无毒不卡 | 在线91视频 | 丰满多毛的大隂户毛茸茸 | 中文字幕亚洲激情 | 国产精品诱惑 | 黄色短片免费看 | 亚洲精品福利 | a人片在线观看 | 亚洲成a| 国产激情з∠视频一区二区 | 麻豆av无码蜜臀av | 啪啪导航 | 婷婷久久久亚洲欧洲日产国码av | 国产午夜久久久 | 天天做天天摸天天爽天天爱 | www啪| 日韩精品少妇一区二区在线看 | 粗一硬一长一进一爽一a级欧美 | 无码毛片内射白浆视频 | 苍井空一区二区三区在线观看 | 久久精品91 | 国产精品久久久久久久久免费 | 国产亚洲美女精品久久久2020 | 久久99亚洲精品久久99果 | 深夜做爰性大片108式 | 欧美老熟妇欲乱高清视频 | 免费无毒av| 日本丰满少妇一区二区三区 | 久久99久久99精品中文字幕 | 成人高清网站 | 亚洲欧洲日产国码av系列天堂 | 在线中文字幕av | 日韩激情一区二区三区 | 亚洲国产日韩a在线乱码 | 欧妇女乱妇女乱视频 | 中文字幕人妻三级中文无码视频 | 最新精品在线 | 免费专区丝袜调教视频 | 中国熟妇牲交视频 | 色眯眯视频 | 91爱视频 | 免费观看成人毛片a片 | 老妇肥熟凸凹丰满刺激 | 亚洲天堂中文字幕在线 | 人妻无码一区二区三区四区 | 亚洲老熟女性亚洲 | 国产欧美视频一区二区三区 | 国产在线精品99一卡2卡 | 捏胸吃奶h玩烂了 | 天天做天天看 | 无码任你躁久久久久久 | 国变精品美女久久久久av爽 | 无码av一区二区大桥久未 | 国内精品人妻无码久久久影院蜜桃 | 日本五十路一区二区三区在线观看 | 国产成人av三级在线观看 | 久久精品女人的天堂av | 国产精品网页 | 少妇高潮大叫好爽 | 成人精品久久 | 国产日韩视频一区 | 日本黄在线 | 欧美videos最新极品 | 亚洲粉嫩美白在线 | 亚洲成人aaa | 欧美亚洲国产另类 | 久久久久久久久久久久久久国产 | 国产精品69久久久久孕妇欧美 | 国产精品96久久久久久久 | 日韩在线观看视频免费 | 日本真人边吃奶边做爽免费视频 | 亚洲 校园 春色.自拍 | 美女网站免费观看视频 | 成人网入口 | 国产手机精品一区二区 | 国产亚洲精品无码不卡 | 午夜无码免费福利视频网址 | 7777欧美日激情日韩精品 | 精品无码久久久久久国产 | 亚洲国产精品一区二区www | 91精品无人区麻豆乱码1区2区介绍 | 亚洲精品在看在线观看高清 | 亚在线第一国产州精品99 | www亚洲| 中国一级特黄真人毛片免费观看 | 国产视频久久久久久久 | 久久久久久九九99精品 | 欧美一极片 | 东北少妇下蹲露大唇 | 欧美性xxxxx极品少妇直播 | 成熟女人特级毛片www免费 | 伊人久久五月丁香综合中文亚洲 | 成年人av网站 | 久久这里只有免费精品6www | 久久综合社区 | 国产精品久久久久久久久免费丝袜 | 欧美特大黄 | 中文字幕网址 | 老司机香蕉久久久久久 | 日本va在线观看 | 色.www| 嘿咻免费视频观看午夜 | 亚洲精品久久久久久久久久久 | 青青草草青青草久久草 | 久久超碰在线 | 国产亚洲产品影视在线产品 | 香蕉精品亚洲二区在线观看 | 日韩国产高清在线 | 免费无遮挡在线观看网站 | 俄罗斯乱妇一区二区三区 | 午夜免费观看视频 | 国产天天在线 | 免费黄色亚洲 | 成人91看片 | 国产肥老妇视频 | 视频一区 中文字幕 | 日本一区二区三区免费观看 | 日日干夜夜爽夜夜高潮 | 97久久久久久久久久久久 | 久久久久亚洲精品乱码按摩 | 成人午夜影视 | 久青草久青草视频在线观看 | 另类综合在线 | 色琪琪综合男人的天堂aⅴ视频 | 99草草国产熟女视频在线 | 天码av无码一区二区三区四区 | 国产精品久久久久久模特 | 91精品视频网 | 久久久久亚洲精品无码蜜桃 | 黄色片视频在线观看免费 | 国产成人无码一二三区视频 | 啪啪激情婷婷久久婷婷色五月 | 最新国自产拍小视频 | 人妻色综合网站 | 99在线热播 | 97久久久久人妻精品专区 | 久久综合九色综合97网 | 狠狠躁夜夜躁人人爽天天5 成人午夜高潮刺激免费视频 | 亚洲日韩中文第一精品 | 亚洲va韩国va欧美va精四季 | 久久av无码精品人妻系列果冻 | 日韩一区二区在线视频 | 日韩精品一卡2卡三卡4卡 | 日本美女aⅴ免费视频 | 国产69精品久久久久久久久久 | 狠狠色噜噜狠狠狠777米奇小说 | 国产极品久久久久久久久 | 欧洲视频一区二区 | 最新版天堂资源在线 | 777久久久免费精品国产 | 欧美在线高清 | 亚洲日本中文字幕在线四区 | 亚洲精华国产精华精华 | 国产又a又黄又潮娇喘视频 精品伊人久久 | 欧美丰满妇大ass | 日本一区二区视频免费观看 | 好紧好湿太硬了我太爽了视频 | 91大神在线看| 国产精品人人做人人爽人人添 | 色图综合 | 伊大人久久香线焦宗合一75大 | 久久久久人妻精品一区三寸蜜桃 | 老司机午夜永久免费影院 | 内射巨臀欧美在线视频 | 毛片毛片免费看 | 中文av片 | 漂亮人妻被黑人久久精品 | 美女高潮黄又色高清视频免费 | 99精品人妻无码专区在线视频区 | 免费看又黄又无码的网站 | 亚洲国产成人精品青青草原导航 | 亚洲婷婷丁香 | 搜一级黄色片 | 成人永久视频 | 亚洲国产a∨无码中文777 | 国产在线国偷精品产拍免费yy | 女人与公人强伦姧人妻完电影 | 欧美不卡高清一区二区三区 | 91看黄| 爱情岛论坛亚洲品质有限公司18 | 国产精品国产三级国产aⅴ 小明av | 1024手机视频在线观看 | 国产精品一区二区久久久久 | 成年人看的免费视频 | 小嫩妇好紧好爽再快视频 | 人人妻人人妻人人片av | 一级香蕉视频在线观看 | 深爱五月激情五月 | 国产亚洲精品久久777777 | 亚洲欧美午夜 | 天天舔天天爽 | 97精品国产97久久久久久久久久久久 | 8x8ⅹ在线永久免费入口 | 中本亚洲欧美国产日韩 | 一级性视频 | 国产一区小视频 | 欧美野性肉体狂欢大派对 | 97视频免费看 | 亚洲 精品 综合 精品 自拍 | 一区久久 | 人人玩人人爽 | 好爽好紧好大的免费视频国产 | 国产成人无码手机在线观看 | 特级a毛片 | 国产99青青成人a在线 | 国产99青草视频在线播放视 | 无套内射蜜桃小视频 | 久久免费一区 | 欲香欲色天天综合和网 | 久久亚洲中文字幕伊人久久大 | 成人免费视频久久 | 日本久久99 | 色婷婷最新网址 | 四虎影视在线影院在线观看免费视频 | 777亚洲熟妇自拍无码区 | 在线精品国产一区二区三区88 | 亚洲黄a| 亚洲成人av在线 | 免费人成网站视频在线观看 | 艳妇臀荡乳欲伦交换av1 | 国内揄拍国内精品对白 | 色www永久免费视频首页在线 | 一本加勒比hezyo无码专区 | 四虎久久久 | 国产正在播放 | 中文字幕 在线 欧美 日韩 制服 | 国产999精品2卡3卡4卡 | 爽爽精品dvd蜜桃成熟时电影院 | 亚洲成av人最新无码不卡短片 | 狠狠久久永久免费观看 | 成年人小视频网站 | 国产午夜成人免费看片 | 99热热热 | 国产精品露出 | 雪白扔子视频大全高清在线观看 | av无码免费岛国动作片片段欣赏网 | 激情网婷婷 | 激情文学小说区另类小说同性 | 免费在线观看黄色av | 日韩人妻无码一区二区三区综合部 | 3d动漫精品啪啪一区二区中 | 久久久性色精品国产免费观看 | 国产精品爽到爆呻吟高潮不挺 | 亚洲日本香蕉视频 | 日韩有码在线观看 | 毛茸茸性xxxx毛茸茸毛茸茸 | 亚洲大尺度无码无码专区 | 亚洲区成人 | 91网站在线观看视频 | 亚洲国产精品国语在线 | 女性喷液过免费视频 | 亚洲欧美第一页 | 超碰人人人人人 | 色天天av| 999在线观看精品免费不卡网站 | 天堂网在线最新版www资源网 | 懂色av一区二区在线播放 | 天天看片夜夜爽 | 亚洲 另类 日韩 制服 无码 | 麻豆秘密入口a毛片 | 无码专区人妻系列日韩精品少妇 | 单亲与子性伦刺激对白播放的优点 | 欧美俄罗斯乱妇 | 免费做爰猛烈吃奶摸视频 | 91久久国产精品视频 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 精品影片在线观看的网站 | 色婷婷网 | 欧美一性一乱一交一视频 | 一区二区三区久久 | 九九九九九九精品任你躁 | 国产中文综合免费 | 99在线热播 | 日韩精品第二页 | 私人午夜影院 | 午夜香蕉视频 | 国产精品国产三级国产专区52 | 蜜臀av在线播放 | 手机在线播放av | 亚洲精品中文幕一区二区 | 三级三级久久三级久久18 | 国产欧美日韩免费观看 | 欧洲性开放大片免费无码 | 日韩精品一区二区三区在线播放 | 天天做日日做天天添天天欢公交车 | 乱色国内精品视频在线 | 18禁无遮挡无码国产免费网站 | 国产视频第三页 | 婷婷丁香五月六月综合激情啪 | 不卡欧美| 91精品视频一区二区 | 一级男女裸片 | 极品美女高潮呻吟国产剧情91 | av免费网址在线观看 | 国产亚洲高初学生不卡观看 | 国产盗摄av | 91黄视频在线观看 | 久久亚洲欧美日本精品 | 中文字幕av无码免费久久 | 欧美人成视频在线视频 | 国产精品久久久久久久久久软件 | 亚洲精品无码国产 | 中文字幕一区在线播放 | 男人j进入女人j内部免费网站 | 亚洲国产av玩弄放荡人妇系列 | 国产成人无码a区在线观看导航 | 黄色天堂网站 | 久久人妻国产精品31 | 国产精品夜夜爽 | 精品深夜寂寞黄网站 | 亚洲第3页 | 亚洲日韩欧美一区二区三区在线 | 最近中文2019字幕第二页 | 学生av | 久久99这里只有精品 | 一区二区三区精品视频免费播放 | 忘忧草社区在线播放日本韩国 | 蘑菇视频成人 | 国产乱xxⅹxx国语对白 | 亚洲午夜精品a片一区二区app | 亚洲精品美女久久久久9999 | 尤物av无码国产在线看 | 五月天天堂网 | 久在线观看福利视频69 | 五月婷婷中文 | 国产一国产aa毛片 | 无码gogo大胆啪啪艺术 | 亚洲午夜精品久久久久久人妖 | 国产一区二区三区四区hd | 99视频网 | 美女又黄又免费的视频 | 国内嫩模私拍精品视频 | 强行18分钟处破痛哭av | 全黄裸体杨贵妃一级 | 日啪| 欧美视频三级 | 国产精品sss| 最新国产精品拍自在线观看 | 国产乱人伦精品一区二区在线观看 | 国产 成 人 小说 视频 | 在线观看国产91 | 91丨九色丨海角社区 | 亚洲男人第一网站 | 日韩欧美一区二区三区久久婷婷 | 国产日产高清欧美一区 | 国产乱子夫妻 | 日韩福利一区 | 免费永久看黄神器无码软件 | 五月婷婷爱爱 | 国内成人自拍视频 | 国产欧美国日产在线播放 | 国产精品久久久综合久尹人久久9 | 亚洲一区二区三区综合 | 国产亚洲精品久久久久久入口 | 日韩免费高清视频 | 亚洲三级高清免费 | 中文字幕欧美日韩精品 | 91黄色视屏 | 四十路息与子中文字幕 | 99无码精品二区在线视频 | 夜夜躁狠狠躁日日躁2002 | 亚洲免费专区 | 日韩黄色成人 | 亚洲欧美动漫 | 国产另类ts人妖高潮 | 久亚洲一线产区二线产区三线产区 | 日韩一级片网站 | 国产精品中文久久久久久久 | 搞黄网站在线观看 | 亚洲高清免费在线观看 | 无码av无码天堂资源网 | 日本一区高清视频 | 久操五月天 | 国产精品日韩欧美 | 成 人 黄 色 视频播放16 | 又粗又硬国语对白 | 中文字幕不卡一区 | 乱码精品一卡二卡无卡 | 成人免费一区二区三区 | 2017亚洲天堂最新地址 | 日日夜夜天天干 | 国a产久v久伊人 | 男人放进女人阳道动态图 | 密臀av夜夜澡人人爽人人 | 影音先锋中文字幕第一页 | 综合激情av | 久久久少妇 | 精久国产av一区二区三区孕妇 | 品久久久久久久久久96高清 | 免费视频爱爱太爽了网站 | 国产精品成人免费一区久久羞羞 | 老女人性淫交视频 | 欧美日韩在线播放三区四区 | 无码免费无线观看在线视 | 日韩免费视频 | 久久狠狠爱亚洲综合影院 | 日本三级香港三级三级人!妇久 | 91麻豆精品一二三区在线 | 男人午夜视频在线观看 | 久久久久人妻一区二区三区 | 国产sm精品调教视频网址 | 国产欧美精品另类又又久久 | 中文字幕乱码无码人妻系列蜜桃 | 同人18动漫在线观看 | 久久九九精品国产综合喷水 | 国产在线操 | 无码av中文字幕免费放 | 欧美40老熟妇色xxxxx | 嫩草在线免费观看 | 色九月亚洲综合网 | 插插无码视频大全不卡网站 | 无码人妻天天拍夜夜爽 | 在线观看国产网址你懂的 | 久久国产成人亚洲精品影院老金 | 一区二区视频观看 | 天海翼视频在线观看 | 亚洲国产精品无码久久秋霞 | 免费看黄色片. | 日韩精品不卡 | 亚洲日韩色在线影院性色 | 中文字幕在线日亚洲9 | 99精品国产一区二区三区不卡 | 亚洲成人激情小说 | 欧美成人三级在线 | 又色又爽又黄的gif动态图 | 伊人久久大香线蕉av最新 | 岛国av无码免费无禁网站 | 精品国产乱码久久久久久蜜柚 | 成人看片黄a免费看那个网址 | 丰满少妇女裸体bbw 国产精品成人久久小草 | 国产三级在线播放 | 色婷婷国产精品综合在线观看 | 精品无人乱码一区二区三区 | 日本精品久久久久中文字幕乱中年 | 欧洲极品少妇 | 日韩欧美亚洲综合 | 色欲av久久一区二区三区久 | 波多野结衣黄色网址 | 福利视频在线播放 | 亚洲国产成人精品女人 | 日本aa在线观看 | 人伦片无码中文字幕 | 日本成人区 | 日韩精品卡通动漫网站 | 呻吟国产av久久一区二区 | 秋霞特色aa大片在线 | 军人粗大的内捧猛烈进出视频 | 超碰1000| 蜜臀av夜夜澡人人爽人人 | 波多野结衣在线视频网站 | 亚洲最大成人综合网720p | 最新777第四色米奇影视 | 成人区精品一区二区婷婷 | 天堂网av2018 | 夜夜爽av| 精品亚洲麻豆1区2区3区 | 亚洲精品久久国产精品浴池 | 日本最新高清一区二区三 | 自拍偷在线精品自拍偷99九色 | 九色.com| 婷丁五月 | 中文国产成人精品久久不卡 | 精品久久久久久成人av | 成人国产精品免费视频 | 午夜美女久久久久爽久久 | 337p亚洲日本中国大胆69 | 蜜臀av在线无码国产 | 日日弄天天弄美女bbbb | 中文字幕丰满孑伦无码专区 | 国产精品一区二区三区在线播放 | 免费人成又黄又爽又色 | 影音先锋亚洲成aⅴ人在 | 自拍偷拍麻豆 | 亚州激情视频 | 国产精品美女久久久久久 | 日韩另类在线 | 亚洲男人的天堂av | 欧美在线播放一区二区 | 欧美性xxxx极品hd欧美风情 | 在线亚洲观看 | 国产精品一区亚洲二区日本三区 | 欧美99精品 | 涩涩涩涩爱网站 | 国产精品99久久久久久人 | 欧美黄色一区 | 人人爽日日躁夜夜躁尤物 | 精品人妻二区中文字幕 | 色欧美综合 | 亚洲综人 | 精品视频免费在线观看 | 国内精品久久久久久久久齐齐 | 精品在线免费观看 | 亚洲国产日韩欧美 | 300部国产真实乱 | 国产午夜精品无码理论片 | 亚洲天堂资源 | 亚洲h视频在线 | 爱色av·com| 国产13页 | 中文字幕奈奈美抱公侵犯 | 夜夜骑天天射 | 丰满白嫩大屁股ass 国产日韩精品一区 | 视频黄色片 | 黑丝袜av | 亚洲欧美www| 夜夜躁很很躁日日躁麻豆 | 欧美日韩在线视频免费播放 | 亚洲精品久久久久久久久毛片直播 | 天天插天天舔 | 99综合色 | 伊人影视网| 自拍偷拍校园春色 | 日韩视频无码免费一区=区三区 | 伊人网色 | 97成人精品国语自产拍 | www.久久伊人 | 天天av天天av天天透 | 亚洲精品tv| 欧美日韩中字在线观看 | 毛片在线免费视频 | 国产久色在线拍揄自揄拍 | 裸体美女无遮挡免费网站 | 精品水蜜桃久久久久久久 | 精品国精品无码自拍自在线 | 日本老肥婆bbbwbbbwzr | 最新欧美精品一区二区三区 | 男女高潮激烈免费观看 | 人妻毛片网站 | 热re99久久精品国产66热 | 亚洲精品久久久www 天天干天天操天天做 | 隔壁人妻被水电工征服 | 欧美视频二区 | 色哟哟在线视频精品一区 | 国产日韩欧美精品在线 | 欧美精品 在线观看 | 美女高潮网站 | 国产精品无码免费专区午夜 | 欧美成年视频在线观看 | 亚洲第一影视 | 91蝌蚪91九色白浆 | 香港三级日本三级韩级人妇 | 激情久久中文字幕 | 天天躁日日躁狠狠躁伊人 | 国产乱人伦偷精品视频下 | 久久久久一区二区 | 免费无码又爽又刺激高潮的app | 亚洲春色av无码专区最 | 亚洲看片网| 国产精品成人嫩草影院 | 成在线人免费视频 | 男同志毛片特黄毛片 | 五月天中文字幕mv在线 | 久久综合色鬼综合色 | 日本大乳奶做爰洗澡三级 | 起碰97在线视频国产 | 妓女妓女一区二区三区在线观看 | www.亚洲| 九九线精品视频在线观看 | 青青国产精品视频 | 亚洲精品一区二区玖玖爱 | 国产精品爽爽久久久久久豆腐 | 亚洲已满18点击进入在线看片 | 99久久久国产精品免费蜜臀 | 古装一级淫片aaaaaa | 中文字幕第一区高清av | 亚洲欧洲日本精品专线 | 边啃奶头边躁狠狠躁玩爽在水里面 | 久草香蕉在线视频 | 91丨九色丨蝌蚪丨少妇在线观看 | 精品欧美成人一区二区不卡在线 | 欧美成人高清视频 | 久久久久久久久伊人 | 国产农村妇女一区二区 | 国产最新精品视频 | 婷婷丁香六月激情综合啪 | 国产九九 | 国产精品色婷婷99久久精品 | 揄拍成人国产精品视频99 | 国产亚洲精品aa片在线爽 | 啦啦啦中文在线观看日本 | 91丨porny丨加精 | 黑人与人妻无码中字视频 | 国产精品久久久999 色五月丁香五月综合五月 人妻互换免费中文字幕 | 午夜视频在线瓜伦 | 99爱在线观看 | 国产九九 | 日韩aⅴ人妻无码一区二区 337p日本欧洲亚洲大胆精品 | 精品无码午夜福利理论片 | 性欧美欧美巨大69 | 精品国产乱码久久久久久88av | 亚洲精品成人av | 自拍偷自拍亚洲精品偷一 | 亚洲va中文在线播放 | 亚洲裸体视频 | 日韩在线一区二区视频 | 久久久久国产综合av天堂 | 婷婷国产一区 | 成人欧美一级特黄 | 亚洲精品久久久久国产剧8 日韩欧美一区二区三区不学 | 成人毛片18女人毛片免费 | 欧美激情一区二区三区四区 | 久草在线免费看视频 | 亚洲精品国产黑色丝袜 | 亚洲日韩精品a∨片无码加勒比 | 亚洲视频中文字幕 | 91免费看 | 星空大象在线观看免费 | 久久无毛 | 日本熟妇色xxxxx日本妇 | 色综合亚洲一区二区小说 | 香蕉成人啪国产精品视频综合网 | 黄色婷婷 | 精品久久久久久久久久中文字幕 | 亚洲爆乳无码精品aaa片蜜桃 | 亚洲a爱 | 看免费日韩大片 | 久久影视久久午夜 | 在线观看黄色大片 | 欧美视频在线观看,亚洲欧 中文字幕第5页 | 国产99久久久国产精品~~牛 | 日本人做受免费视频 | 国产一级一片免费播放放a 国产人妻精品无码av在线 | 在线观看片a免费不卡观看 日韩性猛交ⅹxxx乱大交 | 一区二区三区av高清免费波多 | 操bbb操bbb| 一区视频在线 | 日韩视频在线观看网站 | 2018天天干天天射 | 乱人伦中文字幕在线 | 青草伊人网 | 成 人 黄 色 视频免费播放 | 亚洲欧美日韩国产综合一区二区 | 成人涩涩网站 | 亚洲成人欧美 | 久久亚洲欧美日本精品 | 国产精品久久久久久久久借妻 | 可以在线观看的av网站 | 真实国产网爆门事件在线观看 | 欧美极品在线播放 | 曰韩精品无码一区二区三区 | 国产精自产拍在线看中文 | 久久久99无码一区 | 男女裸体下面进入的免费视频 | 欧美成人高潮一二区在线看 | 久久国产欧美日韩精品图片 | 69av国产| 无码超乳爆乳中文字幕久久 | 一本一本久久a久久精品综合妖精 | 中国毛片免费观看 | 国产日韩精品一区 | 日韩六区 | 日本超碰在线 | 精品av综合导航 | 天堂中文在线官网 | 日韩视频a| 国产在线无码精品无码 | 久久精品国产999久久久 | 亚洲人成网站999久久久综合 | 偷拍农村老熟妇xxxxx7视频 | 欧美91看片特黄aaaa | 国产女厕偷窥系列在线视频 | 日本艹逼 | 久久综合色婷婷 | 亚洲欧洲成人精品久久一码二码 | 艹b视频在线观看 | 色婷婷国产精品高潮呻吟av久久 | 亚洲精品1234 | 国产中文区4幕区2021 | av在线精品 | 免费看日韩av | 久久国产精品99久久久久久口爆 | 91麻豆视频在线观看 | 欧美人与zoxxxx另类 | 日本在线一区 | 色人阁综合 | 久久人人爽人人爽人人片 | 国产乱了视频 | 亚洲国产精品尤物yw在线观看 | 成人无码精品一区二区三区亚洲区 | 少妇厨房愉情理伦片视频在线观看 | 国产成人精品三上悠亚 | 日本精品视频一区二区 | 精品国产在天天在线观看 | 97免费在线观看视频 | 国产免费一级视频 | 97se亚洲国产综合自在线不卡 | 国产色a∨在线看免费 | 国产麻豆一精品一av一免费 | 日本三级韩国三级三级a级按摩 | 夫妇交换性三中文字幕 | 日本乱码一区二区三区不卡 | 国产精品第8页 | 国产乱码卡二卡三卡4 | 亚洲国产激情 | 色人阁在线视频 | 免费特黄夫妻生活片 | 国产国产成人久久精品 | 天天爽av| 日本无遮挡真人祼交视频 | 亚洲人xxx日本人18 | 我色综合 | 亚洲精品在线免费观看视频 | 人人爽人人看 | 午夜性爽视频男人的天堂 | 国产精品jizz视频 | 亚洲高潮毛片无遮挡免费 | 欧美成人精品视频在线不卡 | 九九精品免费视频 | 丰满岳跪趴高撅肥臀尤物在线观看 | 在线观看福利网站 | 国产成年女人毛片80s网站 | 亚洲福利视频导航 | 久久精品国产亚洲a∨蜜臀 久久6免费视频 | 国内精品一区二区三区在线观看 | 精品国产午夜福利在线观看 | 无码人妻丰满熟妇区五十路百度 | 中国女人学生69xxx视频 | 国产精品乱码一区二区三区视频 | 久久久久久久久18久久久 | 永久看看免费大片 | 男人猛戳女人30分钟视频大全 | 中文字幕色呦呦 | 夜夜夜夜曰天天天天拍国产 | 免费的国产成人av网站装睡的 | 午夜片在线 | 男人天堂网在线观看 | 黑人与饥渴少妇在线 | 日韩一级黄色毛片 | 美女黄网站在线观看 | www.youjizz日本 | 无码av无码免费一区二区 | 色香欲天天天影视综合网 | 欧美国产日韩a欧美在线观看 | 欧美黑人性生活视频 | 亚洲视频2 | 亚洲美女性视频 | 亚洲欧美一区二区三区四区 | 亚洲成a人 | 国产又色 | 干欧美少妇 | 欧美无砖专区免费 | 成年美女黄网站色大片免费软件看 | caoporm视频| 日日躁夜夜躁狠狠躁夜夜躁 | 久久婷婷国产麻豆91天堂 | 久热精品在线 | 欧美日韩三区 | 一区高清| 好大好湿好硬顶到了好爽视频 | 国产在线看老王影院入口2021 | av天天干| 精品熟人妻一区二区三区四区不卡 | 亚洲欧美日韩另类精品一区二区三区 | 51国偷自产一区二区三区的来源 | 日本免费一区二区三区四区五六区 | 91久久精品日日躁夜夜躁欧美 | 国产露脸精品产三级国产av | 亚洲福利影视 | 狠狠艹逼| 亚洲精品国产字幕久久不卡 | www.毛片com | 手机看片精品国产福利 | 亚洲国产成人精品女人 | 欧美全免费aaaaaa特黄在线 | 国产精品一区免费在线观看 | 国产精品偷乱视频免费观看了 | 97碰视频| 人人狠狠综合久久亚洲爱咲 | 免费无码黄网站在线看 | 国产裸体舞一区二区三区 | 欧美三级欧美一级 | 欧美性猛交xxxx黑人猛交 | 国内揄拍国内精品 | japanese国产在线 | 精品欧洲av无码一区二区男男 | 日本激情吻胸吃奶呻吟视频 | 91激情小视频 | 欧美日韩伊人 | 欧美性插插 | 日本黄色a视频 | 久久久久久久久久久久久女过产乱 | 久久久.www | 男女做爰无遮挡性视频 | 青青草av一区二区三区 | 欧美特级特黄aaaaaa在线看 | 亚洲免费三区 | 五月婷在线视频 | 精品一区二区三区久久 | hd最新国产人妖ts视频 | 精品久久香蕉国产线看观看亚洲 | 韩国无码色视频在线观看 | 曰韩精品无码一区二区三区 | 久久欲| 女教师淫辱の教室蜜av臀 | 激情五月深爱五月 | 成人一级免费视频 | 日皮视频免费看 | 玩爽少妇人妻系列视频 | 国产成年无码久久久久下载 | 综合五月激情 | 欧美极品jiizzhd欧美暴力 | 强奷漂亮人妻系列老师 | 东北少妇不带套对白 | 亚洲色偷拍另类无码专区 | 网产贷裸拍视频在线播放 | 男人边吻奶边挵进去视频 | 国产精品一区二区三区免费视频 | 天堂v亚洲国产ⅴ第一次 | 人人爽人人爽人人爽 | 成年人免费在线看 | 亚洲精品在线视频观看 | wwwxxx日本在线观看 | 欧美国产日韩a欧美在线观看 | 亚洲aⅴ无码专区在线观看春色 | 性生交大全免费看 | 美女100%露出胸无遮挡网站 | 免费人成在线视频无码软件 | 在线天堂资源www在线污 | 日韩中文字幕免费观看 | 久久国产综合精品 | 久久/这里只精品热在线获取 | 亚洲精品麻豆 | 美女网色站 | 久久不见久久见www免费视频 | 色88888久久久久久影院 | aaa人片在线| 亚洲婷婷在线视频 | 天天艹天天爽 | 亚洲精品视频观看 | 日韩福利一区二区 | 中文区第二页永久有效 | 可以直接观看的av | 插鸡网站在线播放免费观看 | 亚洲另类伦春色综合图片 | 国产一级大片在线观看 | 亚洲成av人片在线观看ww | 日本不卡中文 | 无遮挡裸体免费视频尤物 | 日韩欧美偷拍高跟鞋精品一区 | 精品综合久久久久久8888 | 秋葵视频黄色 | 国产在线自 | 日日夜夜狠狠 | 亚州av网站| 国产精品成熟老女人视频 | 久久亚洲精品人成综合网 | 国产精品无码av不卡 | 八戒八戒午夜视频 | 精品国产百合女同互慰 | 好吊操视频这里只有精品 | 奇米777四色精品综合影院 | 狠狠色成色综合网 | 久久久免费无码成人影片 | 日本最新高清一区二区三 | 男人添女人下部高潮全视频 | 亚洲精品无码永久中文字幕 | 成人av视屏| 亚洲区视频 | 久久久橹橹橹久久久久手机版 | 亚洲永久免费网站 | 制服丝袜人妻日韩在线 | 男男gv白嫩小受gv在线播放 | 亚洲日本丝袜丝袜办公室 | 国产在线激情视频 | 高清国产一区二区三区在线 | 深夜久久 | 亚洲一区二区精品在线 | 夜夜被公侵犯的美人妻 | 97超超碰 | 最近最好的中文字幕2019免费 | 少妇丰满大乳被男人揉捏视频 | 好男人好资源在线观看免费视频 | 中文字幕av导航 | 亚洲精品无吗 | 亚欧精品在线观看 | 少妇视频网站 | aaa国产视频| 国产av区男人的天堂 | 亚洲一级色 | 亚洲日本欧美日韩中文字幕 | 影音先锋中文字幕在线播放 | 高清同性猛男毛片 | 风韵犹存丰满大屁股熟妇视频 | 国产成人a在线观看网站站 久久久中文字幕日本无吗 欧美xxxx做受欧美人妖 | av综合色| 2021最新热播中文字幕-第1页-看片视频 成人毛片在线观看 | 蜜臀av午夜精品 | 国产一区视频在线播放 | 一级大片免费 | 国产小视频91 | 又粗又大又黄又爽的免费视频 | 天堂a免费视频在线观看 | 毛片一区二区三区无码 | 性――交――性――乱a | 国产精品a久久久久 | 久久老子午夜精品无码 | 夜操操| 一级国产20岁美女毛片 | av色区 | 国产成人片无码免费视频软件 | 91美女免费看 | 久操国产 | 泰国性xxx视频 | 亚洲一区二区三区视频在线 | 美日韩毛片 | 无码熟妇人妻av在线影院 | 精品视频久久 | 国产福利萌白酱在线观看视频 | 狠狠亚洲婷婷综合色香五月排名 | 国产成人三级在线视频 | 色噜噜狠狠成人中文 | 成年美女黄网站色大片免费软件看 | 亚洲国产欧美另类 | 日韩精品第一页 | 真人做人试看60分钟免费视频 | 免费久久日韩aaaaa大片 | 99蜜桃臀久久久欧美精品网站 | 国产欧美日韩另类精彩视频 | 国产激情无码一区二区app | 亚洲国产成人久久精品大牛影视 | 日韩 亚洲 制服 欧美 综合 | 97一期涩涩97片久久久久久久 | 国内精品自产拍在线观看 | av激情亚洲男人的天堂国语 | 少妇又色又紧又黄又刺激免费 | 狠狠色综合欧美激情 | 亚洲女初尝黑人巨高清 | 黄色好看视频 | 欧美人与动人物牲交免费观看久久 | 国产精品久久久久无码人妻 | 亚洲精品亚洲人成在线观看麻豆 | 99精品视频在线观看免费蜜桃 | 国产成人高清成人av片在线看 | 亚洲国产欧洲综合997久久 | 欧美日韩的一区二区 | 国产成人精品视频ⅴa片软件竹菊 | 91在线中文字幕 | 亚洲线精品一区二区三区 | 东京热无码一区二区三区分类视频 | 韩日精品在线 | 少妇xxxxx性开放中出 | 人人澡人人曰人人摸看 | 中文字字幕在线中文乱 | 国产欧美日韩不卡 | 无码人妻h动漫 | 北条麻妃一区二区三区在线视频 | 日本精品久久久久中文字幕乱中年 | 91精品国产91久久久 | 噜噜噜亚洲色成人网站∨ | 亚洲中文有码字幕日本 | 99中文字幕在线观看 | 欧美桃色视频 | 影音先锋亚洲精品 | 日日夜夜操av | 欧美变态口味重另类在线视频 | 在线观看国产成人swag | 人人妻人人澡人人爽人人精品av | 涩涩鲁亚洲精品一区二区 | 国产在线观看第一页 | 日日干干夜夜 | 久久久久久久久久久国产精品 | 成年人黄色免费网站 | 深夜福利视频在线观看 | 麻豆国产人妻欲求不满谁演的 | 日韩无码电影 | 国产成人丝袜精品视频app | 免费午夜激情 | 在线视频国产一区 | 蜜臀av在线播放 | 正在播放国产对白孕妇作爱 | 国产精品人成视频免费vod | 九色精品在线 | 日韩精品人妻无码久久影院 | 农村野战三级做爰 | 欧美成人午夜在线视频 | 久久精品国产999久久久 | 国产人成精品 | 综合天堂av久久久久久久 | 四虎免费网址 | 打屁股日本xxxxx变态 | 日本α片无遮挡在线观看 | 久久精品aaaaaa毛片 | 亚洲欧美第一页 | 欧美肥臀大屁股magnet | 日本高清视频网站www | 国产v在线观看 | 国内精品九九久久精品 | 国产成人精品女人久久久 | 亚洲中字慕日产2020 | 成人在线午夜 | 99精品偷拍在线中文字幕 | 成人片国产精品亚洲 | 亚洲综合在线色 | 谁有毛片网站 | 无码任你躁久久久久久老妇 | 伊人久久久久久久久久久 | 国产三级全黄裸体 | 婷婷狠狠操 | 久久国产午夜精品理论片推荐 | 国产成人在线网站 | 亚洲欧美一区二区三区在线 | 亚洲熟女久久色 | 视频一区在线播放 | 亚洲人成人77777网站 | 毛片高清免费 | 欧美午夜精品理论片 | 乱人妻人伦中文字幕 | 久久天天躁狠狠躁夜夜2020一 | 精品成人久久 | 97在线视频观看 | 岛国av网址 | 伦理片无码电影在线看 | 中文字幕亚洲中文字幕无码码 | 日韩精品一区国产偷窥在线 | 精品卡一卡二卡3卡高清乱码 | 久久国产这里只有精品 | 亚洲午夜精品av无码少妇 | 夜夜骑天天射 | 狠狠色噜噜狠狠狠狠97首创麻豆 | 奇米影视狠狠干 | 另类视频一区 | 午夜视频1000 | 久久午夜片 | 一区二区三区在线视频免费观看 | 亚洲色精品vr一区二区 | 日韩午夜在线播放 | 国产高清在线不卡 | 色偷偷成人网免费视频男人的天堂 | 看黄a大片爽爽影院免费无码 | 国产又粗又长又黄视频 | 久久无码无码久久综合综合 | 国产精品爆乳奶水无码视频免费 | 美女福利视频导航 | 免费两性的视频网站 | 在线观看中文字幕2021 | 亚洲国产精品无码久久sm | 欧美色xxx| 日本一级片在线播放 | 一区二区三区精品视频免费播放 | 日韩人妻无码精品专区 | 亚洲综合第一页 | 44444kk在线观看免费一级 | 少妇高潮惨叫喷水在线观看 | 大尺度av无码污污福利网站 | 男ji大巴进入女人的视频 | 19+韩国美女vip福利 | 国产午夜福利片 | 午夜精品久久久久久久久久久久久蜜桃 | 国产成人av片在线观看 | 无码国产精品一区二区免费式芒果 | 免费99| 97干在线视频 | 全程偷拍露脸中年夫妇 | 亚洲成人av一区二区三区 | 黄av免费| 7777欧美大白屁股ass | 97夜夜澡人人爽人人模人人喊 | 侵犯女教师一区二区三区 | 日韩免费一区二区三区 | 福利视频网址导航 | 色狠狠色噜噜av一区 | 国产精品va无码免费 | 欧美激情精品久久久久久蜜臀 | 成人午夜黄色 | 狠狠热视频 | sb少妇高潮二区久久久久 | 国产性猛交普通话对白 | 女av在线| 四虎永久在线精品8848a | 国产精品香蕉在线观看 | 91精品在线免费观看 | 中文字幕av一区二区 | 国产精品久久久久千精品 | 亚洲人成无码网www电影榴莲 | 国产视频123 | 亚洲少妇激情 | 亚洲乱码国产乱码精品天美传媒 | 婷婷色色狠狠爱 | 人妻avav中文系列久久 | 国产丝袜肉丝视频在线 | 亚洲中文字幕无码专区 | 豆花视频18 成人入口 | 成 人 网 站国产免费观看 | 日本免费网站在线观看 | 精品欧美一区二区三区免费观看 | 青青青在线免费观看 | 五月婷综合网 | 国产无遮挡 | 97超级碰碰碰视频在线观看 | 亚洲 欧美 制服 另类 日韩 | 西西人体午夜视频无码 | 久久永久视频 | 极品人妻videosss人妻 | 中文乱码字慕人妻熟女人妻 | 中文字幕欧美激情 | 国产精品久久777777 | 亚洲日韩高清在线亚洲专区 | 免费无遮挡无码h肉动漫在线观看 | 国产成网站18禁止久久影院 | 黄色成年人视频在线观看 | 国产精品美女www爽爽爽视频 | 91吃瓜在线 | 欧美日韩成人在线观看 | 欧美激情免费在线 | 日日躁夜夜躁白天躁晚上躁91 | 亚洲国产精品福利片在线观看 | 亚洲成人免费影院 | 国产真人做爰免费视频 | 中文字幕久久精品波多野结百度 | 中文字幕日韩人妻无码 | 国产午夜福利伦理300 | 福利一区三区 | 国产成a人片在线观看视频下载 | 天堂а√8在线最新版在线 91亚洲精华 | 亚洲国产精品无卡做爰天天 | a∨天堂亚洲区无码先锋影音 | 欧美视频在线观看一区二区三区 | 亚洲人成无码网站在线观看野花 | 亚洲免费观看在线视频 | 丰满无码人妻熟妇无码区 | 中国女人啪啪69xxⅹ偷拍 | 久9热这里只有精品视频 | 激情欧美一区二区免费视频 | 偷偷做久久久久免费网站 | avaiai| 亚洲无线看 | 未满成年国产在线观看 | 日韩国产一区二区 | 我想看一级黄色毛片 | av天天干 | 精品一区二区三区免费 | 美女在线网站 | 欧美日韩国产高清视频 | 无码成人1000部免费视频 | 国产精品多久久久久久情趣酒店 | 超碰av男人的天堂 | 9999在线视频 | 欧美交换国产一区内射 | 亚洲 自拍 欧美 日韩 丝袜 | 久久97久久97精品免视看 | 手机免费av | 成人国产精品蜜柚视频 | 久久五月综合 | 99精品久久精品一区二区 | www.youjizz.com日本 | 欧美精品国产动漫 | 韩国黄色片网站 | 日韩av一区二区精品不卡 | 久久国语对白 | 992在线观看| 国产日产精品一区二区三区四区 | 红桃国产视频 | 国精产品一区一区三区 | 狼人综合伊人网 | 亚洲乱论 | 欧美丝袜脚交 | 大j8福利视频导航 | 久久久国产一区二区 | 亚洲人成无码网www电影榴莲 | www.福利视频 | 超碰免费在线播放 | 国产精品高清一区二区不卡片 | 老司机精品视频一区二区三区 | 精品视频九九 | 无码中文字幕色专区 | 媚药侵犯调教放荡在线观看 | 亚洲第一在线视频 | 激情视频久久 | 色午夜视频 | 黑人大战中国av女叫惨了 | 美日韩黄色片 | 亚洲高请码在线精品av | 成人亚洲网 | 青青青在线视频 | 色人阁亚洲| 亚洲精品久久久久久久久久 | 亚洲欧美视频一区 | av中文字幕一区 | 二区三区av | 99久久久国产精品免费蜜臀 | 狠狠噜天天噜日日噜色综合 | 欧美性色黄大片 | 婷婷色色狠狠爱 | 日韩人妻无码一区二区三区综合部 | 午夜影院免费体验区 | 国产情侣91 | 精品国产色 | 国产亚洲精品久久一区二区三区 | 在线一区二区三区 | 77色午夜成人影院综合网 | 亚洲熟妇无码久久精品 | www.色就是色 | 免费久久| 91亚洲国产成人精品性色 | 好大好湿好硬顶到了好爽视频 | 青草影院内射中出高潮 | 动漫精品视频一区二区三区 | 色av免费 | 无码国内精品人妻少妇蜜桃视频 | 精品中文字幕在线观看 | 国产99久久精品一区二区 | www.亚洲一区二区 | 亚洲jizzjizz少妇野女人 | 美女黄色大片 | 久久免费视频99 | 粉嫩av亚洲一区二区图片 | 欧美日韩高清不卡 | 欧美日韩一区二区三区在线观看视频 | 国产成人理论在线观看视频 | 情侣作爱视频网站 | 国产片av国语在线观看手机版 | 99久久99久久免费精品蜜臀 | 亚洲日韩看片无码电影 | 国产人妻黑人一区二区三区 | 中文字幕av不卡电影网 | 一本色综合亚洲精品 | 在线亚洲欧美 | 成在人线av无码免费漫画 | 无码少妇一区二区三区视频 | 色资源在线| 中文字幕无线码成人免费看 | 亚洲444kkkk在线观看 | 丁香五月激情综合亚洲 | 色综合天天综合网天天看片 | 日韩成av人片在线观看 | 国产欧美一区二区精品久导航 | 在线精品自拍 | 无码专区中文字幕无码野外 | 亚洲伦理自拍 | 成本人片无码中文字幕免费 | 91丨九色丨丰满人妖 | 97国产资源 | 少妇一区二区三区 | 青青青青久久精品国产 | 奇米精品一区二区三区四区 | 最新免费黄色网址 | 亚洲国产精品一区二区动图 | 久久午夜精品视频 | 亚欧成人| 中国妞xxxhd露脸偷拍视频 | 久久精彩免费视频 | 色偷偷88888欧美精品久久 | 国产精品偷伦视频免费观看了软件 | 国产精品99久久免费黑人人妻 | 国产高清成人免费视频在线观看 | 午夜欧美艳情视频免费看 | 三上悠亚久久爱一区 | 国产亚洲精品a在线 | 少妇呻吟白浆高潮啪啪69 | 亚洲欧美日韩精品久久亚洲区 | 色噜噜狠狠色综合欧洲 | 中文字幕无码人妻少妇免费 | 97超级碰碰碰视频在线观看 | 波多野结衣一区二区三区中文字幕 | 欧洲肉欲k8播放毛片 | 国外国内精品国产成人国产三级 | www.夜夜操.com | 亚洲卡一卡二新区入口将开 | 欧美一级精品 | 成人免费无码大片a毛片抽搐色欲 | 狠狠操超碰| 国产精品成人一区二区三区视频 | 国产丝袜无码一区二区视频 | 亚洲国产剧情中文视频在线 | www.7788久久久久久久久 | 福利日韩| 亚洲精品高清国产一线久久 | 精品国产你懂的在线观看 | 玖玖热视频 | 国产精品真实灌醉女在线播放 | 国产福利一区二区三区视频 | 操bbb操bbb| 少妇爱做高清免费视频 | 日本免费一区二区三区在线播放 | 成人三级毛片 | 无码人妻丰满熟妇区bbbbxxxx | 亚洲综合福利 | 国产免费一区二区三区在线能观看 | 大香线蕉伊人精品超碰 | 亚洲高清偷拍一区二区三区 | 色一情一区二区三区四区 | 日韩亚洲一区二区三区 | 人人九九精 | 在线亚洲精品国产一区麻豆 | 午夜嘿嘿嘿在线观看 | 52avaⅴ我爱haose免费视频 | 青草久久久国产线免观 | 免费在线视频一区 | 欧美性猛少妇xxxxx免费 | 性男女做视频观看网站 | 一级黄色片一 | 中文字幕人妻熟女人妻a片 天天成人综合网 | 99久久精品毛片免费播放高潮 | 内射人妻无码色ab麻豆 | 日韩欧美偷拍高跟鞋精品一区 | 97se亚洲综合自在线 | 成人福利在线播放 | 欧美成人看片一区二区 | 清清草视频 | 日本做床爱激情爽全视频 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲日韩乱码中文字幕 | 午夜激情综合 | 免费亚洲一区二区 | 手机日韩av| 超碰97人人做人人爱2020 | 欧美福利影院 | 亚洲gv猛男gv无码男同短文 | 制服丝袜国产av无码 | 超碰在线97国产 | 亚洲午夜久久久精品一区二区三剧 | 日韩精品久久理论片 | 国产成人综合久久精品 | 一区二区三区四区中文字幕 | 国产免费1卡二卡三卡四卡 欧美一区二区三区精品免费 | 亚洲第一视频网 | 午夜小视频在线免费观看 | 日免费视频 | 综合无码成人aⅴ视频在线观看 | 夜夜天天噜狠狠爱2019 | 扒开双腿吃奶呻吟做受视频 | 粉嫩精品国产色综合久久不8 | 一级无毛片 | 国产成人乱色伦区 | 丝袜足控一区二区三区 | 在线a久青草视频在线观看 成午夜精品一区二区三区软件 | 国产精品久久久久久久久久不蜜月 | 日本无码人妻一区二区色欲 | 久久婷婷国产91天堂综合精品 | 野花社区在线观看视频 | 亚洲色图40p | 狠狠爱亚洲五月婷婷av | 免费无码又爽又刺激软件下载 | 久婷婷 | 操操操人人 | 正在播放国产真实露脸高清 | 福利在线网站 | 亚洲欧美洲成人一区二区 | 亚洲成人综合在线 | 久久久久亚洲精品无码网址 | 精品久久久久久成人av | 国产精品美女久久久网av | 99re只有精品 | 日本大尺度吃奶呻吟视频 | 哺乳一区二区久久久免费 | 18禁美女裸体无遮挡网站 | 97狠狠狠狼鲁亚洲综合网 | 色哟色哟色精品 | 亚洲国产影院av久久久久 | 天天操夜 | 国内成+人 亚洲+欧美+综合在线 | 一区一区三区产品乱码 | 国产乱淫av片免费观看 | china乱淫高潮chinese | 射久久 | 91欧美一区 | 精品久久久免费视频 | 中文字幕日本特黄aa毛片 | 美女做受 | 超碰97久久国产精品牛牛 | 久久久亚洲欧洲日产国码二区 | 久久综合中文网 | 污网站在线观看免费 | 日本精品αv中文字幕 | 国产精品户露av在线户外直播 | 全国最大成人免费视频 | 思思re热免费精品视频66 | 性一交一乱一色一视频 | 国产一区二区精品免费 | 国产精品久久久久久在线观看 | 久久www免费人成看片小草 | 天堂中文在线播放 | 亚洲天堂网一区 | 欧美日韩a| 天堂视频一区 | 国产精品精东影业 | 少妇欧美激情一区二区三区 | 亚洲码专无区2022 | 国产精品毛片一区 | 伊人网综合在线 | 性一交一乱一伦一色一情丿按摩 | 天天影视涩香欲综合网 | 午夜性刺激在线观看 | 成年女人片免费视频播放a 亚洲图区综合网 | 国内少妇偷人精品免费 | 亚洲综合五月天婷婷 | 狠狠色丁香婷婷综合视频 | 高h乱肉辣文乡村 | 亚洲中文字幕无码av在线 | 欧美欲妇 | 亚洲字幕av一区二区三区四区 | 免费亚洲精品 | 2022精品久久久久久中文字幕 | 国产色欲av一区二区三区 | 秋霞午夜鲁丝一区二区老狼 | 国产成人综合亚洲精品 | 按摩三级3~6日本xx | 国产乱在线 | 国产精品亚洲一区二区三区天天看 | av免费播放一区二区三区 | 在线a人片免费观看视频 | 18禁止进入1000部高潮网站 | 国产在线午夜不卡精品影院 | 中国熟妇牲交视频 | 无码人妻精品一区二区三区99仓本 | 久久精品国产只有精品96 | 无套内谢少妇毛片免费看 | 嫩草国产露脸精品国产软件 | 一本色综合网久久 | 哺乳溢出羽月希中文字幕 | 国产亚洲精品久久久久久移动网络 | 国产精品国产三级国产专i 国产精品午夜剧场免费观看 | 国产精品美女久久久久 | 国产成人免费无码视频在线观看m | 少妇和黑人老外做爰av | 国产成人欧美一区二区三区八 | 国模大尺度福利视频在线 | 欧美一区二区三区观看 | 免费乱码人妻系列无码专区 | 在线色站 | 午夜影院男女 | 自拍偷自拍亚洲精品牛影院 | 国产在线不卡一区二区三区 | 五月丁香六月狠狠爱综合 | 国产在线线精品宅男网址 | 日韩av爽爽爽久久久久久 | 中国凸偷窥xxxx自由视频 | 精品国产一区av天美传媒 | 无码中文字幕日韩专区视频 | 色999日韩 | 蜜桃网av| www欧美在线观看 | 欧美成人小视频 | 欧美性色网 | 乱爱性全过程免费视频 | www.91sese| 九色九九九老阿姨 | 女人18毛片水真多免费视频 | 婷婷婷国产在线视频 | 激情综合亚洲 | 东方av在线播放 | 国产小视频你懂的 | 欧美精品免费看 | 搡女人真爽免费视频网站波兰美女 | 91精品国产综合久久久久久久久 | 国产一码二码三码区别 | 成熟交bgmbgmbgm在线 | 操一操视频| 91精品国产91| 免费1级做爰片在线观看爱 日本精品三级 | 人妻熟妇乱又伦精品视频无广告 | 欧美成人aa久久狼窝五月丁香 | 日本护士毛茸茸高潮 | 日韩中文一区 | 真实的国产乱xxxx | 国产精品久久久久久久福利 | 国产内射性高湖 | 免费1级a做爰片在线观看 | 中文字幕av无码人妻 | 国产成人三级三级三级97 | 国产主播喷水 | 国产美女自慰在线观看 | 国产精品沙发午睡系列 | 不卡视频一区二区 | 中本亚洲欧美国产日韩 | 桃花视频在线观看高清版mv | 无码人妻一区二区三区免费看成人 | 亚洲成a人片在线观看无码专区 | 国产精品久久综合 | 又色又爽又黄无遮挡的免费视频 | 日本免费aaa观看 | 日韩精品亚洲人成在线观看 | 不卡中文字幕在线 | 天天躁狠狠躁狠狠躁夜夜躁 | 四虎永久在线精品视频 | 97久久人人超碰caoprom欧美 | 亚洲大胆人体 | 99精品免费久久久久久久久日本 | 欧美日韩一区二区三区在线播放 | 三级伊人 | 国精产品蘑菇一区一区有限 | 他掀开裙子把舌头伸进去添视频 | 九九热av | 亚洲国产精品日本无码网站 | 在线一区二区不卡 | 国产午夜精品久久久久免费视 | 高潮添下面视频免费看 | 综合av在线播放 | 舔高中女生奶头内射视频 | 久久久久久www | 国产成人精品福利一区二区三区 | 99久久综合精品五月天 | 久久色播 | 午夜久久久久 | 久久国产精品77777 | 亚洲精品在看在线观看 | 欧美成人精品一区二区三区在线看 | 婷婷综合缴情亚洲 | 无码av喷白浆在线播放 | 亚洲欧美精品一区 | 福利在线免费视频 | 香蕉久久夜色精品国产使用方法 | 亚洲综合网国产精品一区 | 日韩第1页 | av免费播放一区二区三区 | 青草青草久热国产精品 | 精品久久久久久天美传媒 | 精品福利在线观看 | 国产1区2区3区 | 在线视频中文字幕 | 国内精品久久久久久99 | 亚洲码国产岛国毛片在线 | 在线观看午夜福利院视频 | 国产精品午夜无码体验区 | 强伦姧人妻免费无码电影 | 成人亚洲精品国产www | 少妇人妻av毛片在线看 | 国产精品人妻熟女男人的天堂 | 亚洲中文 字幕 国产 综合 | 国产真人无码作爱免费视频 | 精品日产一卡2卡三卡4卡自拍 | 无码中文字幕人妻在线一区二区三区 | 中文字幕大香视频蕉免费 | 日韩综合一区 | 无码小电影在线观看网站免费 | 久草在线资源福利 | 色老大久久综合网天天 | 人妻熟女一二三区夜夜爱 | 亚洲国产亚综合在线区 | 新婚之夜疯狂做爰视频一区二区 | 绯色av粉嫩av蜜臀av | 青青青免费在线视频 | 亚洲精品国产高清在线观看 | 狠色狠狠色狠狠狠色综合久久 | 中文字幕视频播放 | 国产精品视频免费网站 | 岛国av毛片| 国产精品99久久不卡 | 玩弄人妻少妇老师美妇厨房 | 超碰在线国产 | 亚洲成年人专区 | www.夜夜操| 婷婷狠狠操 | 亚洲av激情毛片九色一区 | 久热网站 | 少妇精品久久久久久久久久 | 精品午夜国产福利观看 | 久久久久成人片免费观看r 亚洲一区 国产 | 亚洲自拍第三页 | 国产精品av一区二区 | 日本不卡高清 | 美女在线国产 | 日日干天天操 | 午夜影视啪啪免费体验区入口 | 国产成a人亚洲精品 | 制服 丝袜 人妻 专区一本 | 无码人妻一区二区三区免费 | 97操操操 | 亚洲精品丝袜 | 看片网址国产福利av中文字幕 | 人妻夜夜添夜夜无码av | 色婷婷综合久久久久中文 | 人人妻人人a爽人人模夜夜夜 | 午夜激情视频在线免费观看 | 伊人久久噜噜噜躁狠狠躁 | 在线观看特色大片免费视频 | 国产对白受不了了中文对白 | 91在线最新 | 欧美日韩国产精品成人 | 8090色| 亚洲一区二区三区中文字幂 | 人妻老妇乱子伦精品无码专区 | 中文精品在线 | 亚洲开心网 | 开心五月综合亚洲 | 无码人妻丰满熟妇啪啪网站 | 久久精品99久久香蕉国产色戒 | 色综合久久久无码中文字幕 | 久久香蕉国产线看观看猫咪av | 久久人人97超碰a片精品 | 中文字幕乱偷在线 | 亚洲精品久久一区二区三区777 | 四虎影院在线免费观看视频 | 天天天综合网 | 欧美人与动欧交视频 | 人妻熟妇乱又伦精品视频中文字幕 | 亚洲琪琪| 免费无码又爽又刺激网站直播 | 中文字幕制服丝袜人妻动态图 | 疯狂添女人下部视频免费 | 中文字幕精品av乱码在线 | 91综合在线 | 激情综合五月婷婷 | 91香蕉视频 | 免费av网站在线播放 | 91com在线观看| 国产高清一区二区三区视频 | www.久久久精品 | 关晓彤真人毛片 | 99爱在线视频| 亚洲精品国产综合麻豆久久99 | 久久不见久久见完整版 | 国产成人亚洲综合色 | 又色又爽又黄又刺激免费 | 夜夜操国产 | 亚洲国产精品无码观看久久 | 免费无遮挡在线观看视频网站 | 欧美午夜精品一区二区三区电影 | 久久不见久久见免费视频6无删减 | 亚洲第一天堂无码专区 | 成人欧美一区二区三区在线 | 精品欧美一区二区三区免费观看 | 亚洲激情av在线 | 永久免费观看片现看 | 国产原创视频 | 中文字幕亚洲综合久久综合 | 国产乱子伦高清露脸对白 | 国产成人综合欧美精品久久 | 色爽 av | 夜夜操夜夜摸 | 天天天天天干 | 91精品国产综合久久久久久久 | 国产欧美亚洲精品第一页 | 2019nv天堂香蕉在线观看 | 国产丝袜一区二区 | 日韩av高潮喷水在线观看 | 亚洲精品456在线播放牛牛影院 | 中文字幕在线亚洲日韩6页 国产日日日 | 国产亚洲视频免费播放 | 婷婷俺也去俺也去官网 | 日本xxxxx高潮少妇 | 在线视频 亚太 国产 欧美 一区二区 | 少妇精油按摩av无码中字 | 九色九九九老阿姨 | 人人澡人人添人人爽一区二区 | 日韩偷拍一区二区 | 午夜精品久久久久久中宇69 | 精品国产一区二区三区四区动漫a | 亚洲视频在线观看免费的欧美视频 | 91传媒理伦片在线观看 | 91精品婷婷国产综合久久性色 | 亚洲美女国产精品久久久久久久久 | 精品国产乱码久久久久软件 | av第一福利大全导航 | 无码人妻丝袜在线视频红杏 | 久草最新 | 少妇厨房愉情理伦片视频在线观看 | 成人午夜福利视频 | 国产一级一级va | 国产女人精品视频国产灰线 | 国产女人喷潮视频在线观看 | 亚洲乱亚洲乱少妇无码99p | 日韩高清一级 | 国产精品久久国产 | 色无五月 | 亚洲淫男的高潮合集 | 999在线免费视频 | 欧美另类天堂 | 久久久久亚洲精品无码蜜桃 | 国产99视频精品免费视频7 | 久久久亚洲成人 | 中文字幕国产 | 国产一精品久久99无吗一高潮 | 久久婷婷一级淫片aaa谢语彤 | 免费人成年激情视频在线观看 | 亚洲爆乳成av人在线视菜奈实 | 免费无码又爽又刺激高潮虎虎视频 | 国产无遮挡又黄又爽免费软件 | 97久久久久人妻精品专区 | 成人碰碰视频 | 成+人+网+站+免费观看 | 日本猛少妇色xxxxx | 男人天堂网在线观看 | 国产乡下妇女做爰毛片 | 17c在线看 | 欧美色炮 | 在线视频免费观看爽爽爽 | 成片在线看一区二区草莓 | 亚欧美一区二区 | 在线视频精品中文无码 | 国产精品美女www爽爽爽软件 | 亭亭五月天网站 | 综合网伊人| 福利久久久 | 欧美极品在线播放 | 久草在线视频新时代视频 | 嫩草影院在线免费观看 | 国产精品成人一区二区三区视频 | 天堂国产+人+综合+亚洲欧美 | 少妇做爰xxxⅹ性视频 | 久久精品国产v日韩v亚洲 | 搡女人真爽免费午夜网站 | 99久久无码一区人妻a片蜜 | 国产精品vr虚拟专区 | 超碰av导航 | 久久久久久一区 | 精品亚洲成av人在线观看 | 99热er| 凹凸成人精品亚洲精品密奴 | 久久精品99久久香蕉国产色戒 | 国产熟人av一二三区 | 人与野鲁交xxxⅹ视频 | 97在线观看永久免费视频 | 最新中文字幕av无码专区不 | 亚洲第一黄网 | 五月婷婷激情综合 | 91区人人爽人人都喜欢人人都有 | 色眯眯网 | 日韩精品视频在线观看一区二区 | 强乱中文字幕av一区乱码 | 久一视频在线观看 | 啊~我是sao货快cao我视频 | 亚洲欧美另类在线视频 | 国产精品欧美一区乱破 | 偷拍视频亚洲 | 久久av高潮av无码av | 久久欧美视频 | 伊人久久大香线蕉av综合 | 人妻丝袜av中文系列先锋影音 | 成人婷婷网色偷偷亚洲男人的天堂 | 国产欧美一区二区三区在线看 | 日韩 亚洲 欧美 国产 精品 | 美日韩一区二区三区 | 五月综合缴情婷婷六月 | 私人成片免费观看 | 欧美色xxx| 先锋影音久久 | 无码三级中文字幕在线观看 | 亚洲综合成人婷婷五月在线观看 | 成人深夜福利视频 | 我爱搞av| 国产偷伦视频片免费视频 | 狠狠色丁香久久婷婷综合_中 | 狠狠干b | 午夜人性色福利无码视频在线观看 | 亚洲影音先锋 | 一区二区免费在线视频 | 精品人妻无码专区中文字幕 | 久久porn | 国产欧美亚洲日韩图片 | 欧美成人一二区 | 国产好爽…又高潮了毛片 | 久久99久久99久久综合 | 精品福利一区二区三区 | 久久中文字幕无码a片不卡古代 | 无码丰满熟妇 | 日日夜夜爽 | 无尺码精品产品国产 | 又硬又粗又大一区二区三区视频 | 狠狠操欧美 | 国产又色又爽又刺激视频 | 午夜美女久久久久爽久久 | 色婷婷久久久亚洲一区二区三区 | 久久青青国产 | 秋霞激情 | 久久久999精品视频 在线视频 亚洲 | 成年人免费看毛片 | 99热免费在线观看 | 国产成人喷潮在线观看 | 国产精品男人天堂 | 欧美人与牲禽动a交精品 | 无码国产精品一区二区免费3p | 在线免费观看亚洲视频 | 香蕉免费一区二区三区 | 性色av一区二区三区人妻 | 特黄少妇60分钟在线观看播放 | 透明装xxxxx性hd | 高潮内射双龙视频 | 欧美顶级metart裸体全部自慰 | 黄色在线观看网站 | 五月婷婷丁香综合 | xxx性视频 | 成人免费国产精品视频 | 少妇激情偷公乱柔佳 | 免费毛片一区二区三区亚女同 | 噜噜噜av久久av牛牛 | 亚洲高清免费看 | 国产精品综合在线 | 国产偷国产偷亚洲清高网站 | 美女裸奶100%无遮挡免费网站 | 日本高清视频一区 | 欧洲专线一区二区三区 | 日本牲交大片免费观看 | 一区二区在线观看免费视频 | 免费无码国模国产在线观看 | 日本激情网 | 天天爽天天 | 欧美大片a | 日韩免费一区二区三区高清 | 精品欧洲av无码一区二区三区 | 欧美老熟妇乱子 | 国产精品欧美一区二区三区奶水 | 欧美亚洲一区二区在线观看 | 日韩免费成人 | 精品精品国产欧美在线 | 久久精品99国产 | 40岁成熟女人牲交片 | 国产喷白浆精品一区二区豆腐 | 亚洲国产精品无码专区在线观看 | 国产精品9x捆绑调教视频 | 欧美猛少妇色xxxxx猛交 | 青青青伊人色综合久久 | 久久影院九九被窝爽爽 | 久爱www人成免费网站 | 亚洲色大成网站www久久九九 | 艳妇乳肉豪妇荡欧美片堕落 | 天天爽夜夜爽夜夜爽精品视频 | 1024在线你懂的 | 亚洲视频精品一区 | 91精品一本久道久久丁香狠狠躁 | 九九久久精品国产 | 中文字幕日本免费毛片全过程 | 国产精品一区理论片 | 人人妻人人爽人人做夜欢视频九色 | www久久久久久| 亚洲色欲综合一区二区三区小说 | 91视频小说 | 亚洲黄色一级大片 | 人人狠狠久久亚洲综合88 | 任我橹这里只有精品 在线视频 | 色欲av久久一区二区三区久 | 久久无码人妻国产一区二区 | 91成人一区 | 国产色视频一区二区三区 | 美女在线网站 | 久久不见久久见www免费视频 | 一区二区三区中文字幕在线 | 丰满无码人妻熟妇无码区 | 777人体大胆中国人体哦哦 | 亚洲成av人的天堂在线观看 | 久久99精品久久久久久秒播 | 91九色中文 | 97久久爽久久爽爽久久片 | 欧美无限看 | 久久综合色_综合色88 | 在线视频18在线视频4k | 天天操夜夜b | 黄桃av无码免费一区二区三区 | 天天色天天射天天操 | 亚洲色大成网站在线 | 久久日韩国产精品免费 | 奇米狠狠操 | 天天干欧美 | 黑人精品欧美一区二区蜜桃 | 国产偷窥熟女精品视频 | 亚洲sm另类一区二区三区 | 亚洲欧洲日本在线 | 欧美成人精品一区二区综合 | www.日日夜夜撸 | 乱码一区二区三区四区 | 免费无遮挡无码永久在线观看视频 | 午夜欧美成人 | 深夜福利1000 | 国产sm重味一区二区三区 | 国产精品久久久久久久久久久不卡 | 亚洲色成人网站永久 | 精品国产免费久久久久久婷婷 | 让少妇高潮无乱码高清在线观看 | 凹凸av导航大全精品 | 日本少妇人妻xxxxx18 | 婷婷激情综合 | 亚洲人成网站免费播放 | 老地方在线观看免费追剧网站 | 综合激情丁香久久狠狠 | 日韩一区二区三区不卡 | 猫咪av.com| 久久免费的精品国产v∧ | 成人在线国产 | 日韩h视频 | youjizz视频 | 中文天堂在线观看 | 亚洲精品偷拍视频 | 中文字幕在线观看三区 | 黑人巨大精品欧美视频一区 | 久久久青青| 最新综合精品亚洲网址 | 神马久久久久久久久久 | 亚洲日韩va在线视频 | 国产亚洲精品久久精品6 | 一级久久| 亚洲精品激情视频 | 大伊人网| 婷婷五月深深久久精品 | 亚洲欧美另类激情综合区蜜芽 | 国产精品女教师av久久 | 国精精品一区二区三区有限公司 | 青青草国产成人av片免费 | 亚洲最大色大成人av | 浓毛老太交欧美老妇热爱乱 | 伊甸园精品区 | 亚洲高清国产拍精品网络战 | 欧美人与动牲交免费观看 | 少妇被又大又粗又爽毛片 | 亚洲欧美日韩国产手机在线 | 伊在线久久丫 | 爱av导航| 超碰伊人久久大香线蕉综合 | 日本三级吹潮在线 | 一级大片免费观看 | 伊人久久大香线蕉综合bd高清 | 国产婷婷在线视频 | 99尹人香蕉国产免费天天 | 成年奭片免费观看视频天天看 | 成人同人动漫免费观看 | 伊人网在线播放 | 女人被狂躁高潮啊的视频在线看 | 美女赤身免费网站 | 久久人妻国产精品31 | 日本特黄成人 | 久久99精品久久久久久噜噜 | 中文字幕第一区高清av | 欧美综合自拍亚洲综合图 | 毛片在哪里看 | 日韩高清不卡在线 | 性欧美大战久久久久久久 | 亚洲精品播放 | 黄色小视频免费观看 | 日韩av激情 | 欧美日本亚洲 | 色老汉免费网站免费视频 | 草草网站影院白丝内射 | 99国产在线视频 | 国产精品极品白嫩在线 | 日韩区欧美久久久无人区 | 欧美日韩国产精品爽爽 | 国产福利91精品一区区二区三国产s | 久久久久亚洲精品天堂 | 在线观看av毛片 | 欧美伊人 | 日韩欧美系列 | 国产偷窥熟妇高潮呻吟 | 大陆少妇xxxx做受 | 爱情岛论坛国产首页 | 日韩视频一区二区三区在线观看 | 特级西西人体444www高清 | 国产综合色视频 | 天天曰视频 | 国模一区二区三区白浆 | 深夜福利在线视频 | 毛片视频在线免费观看 | 国产呻吟久久久久久久92 | 超碰公开在线观看 | 亚洲国产一区二区三区精品 | 中国一级特黄真人毛片免费观看 | 草草福利影院 | 色.www| 国产成人亚洲日韩欧美 | 久久精品国产久精国产思思 | 欧美日韩国产中文字幕 | 又色又刺激 | 黄 色 成 年 人免费观看 | 亚洲一本大道av久在线播放 | 精品国产乱码一区二区三区四区 | 2020久热爱精品视频在线观看 | 青青草成人在线观看 | 亚洲精品国产一区二区三区在线观看 | 国产精品人成视频免费999 | 在线人人车操人人看视频 | 性荡视频播放在线视频 | 精品久久久久久无码不卡 | 免费看一级黄色大片 | 国产成人精品亚洲777人妖 | 亚洲一区二区三区在线播放无码 | 精品久久成人 | 国产精品69人妻我爱绿帽子 | 国产精品88久久久久久妇女 | 在线观看小视频 | 亚洲aⅴ无码专区在线观看 国产美女三级无套内谢 | 亚洲h| 成年男人的天堂 | 日韩精品系列 | 国产午夜精品免费一区二区三区视频 | 国产成人av三级在线观看按摩 | 国产青青青 | 久久九九免费 | 国产精品3区 | 一级黄色免费 | 人人添人人妻人人爽夜欢视av | 亚洲va久久久噜噜噜久久男同 | 国产精品国产三级国产av麻豆 | 亚洲精品美女久久17c | 97久久国产 | 一区二区三区有限公司 | 亚洲精品国产欧美 | 人人草人人舔 | 欧洲美熟女乱又伦 | 懂色av一区二区三区免费 | 国产精品.xx视频.xxtv | 午夜性视频 | 日韩国产亚洲一区二区三区 | av资源网址 | 无码日本精品一区二区片 | 97久久精品国产一区二区三区 | 白丝x88av| 午夜精品区 | 青草成人免费视频 | 不卡视频一区二区三区 | 青青草91青娱盛宴国产 | 国产成人av片 | 337p日本欧洲亚洲大胆精筑 | 影音先锋男人av鲁色资源网 | 黄色日本视频 | 性毛片| 午夜精品久久久久久久久 | 亚洲涩涩在线 | 欧美午夜性春猛交ⅹxxxh | 中文字幕一区二区免费 | 黄色大片免费观看视频 | 伊人影院在线观看视频 | 日韩精品福利在线 | 18禁男女无遮挡啪啪网站 | 亚洲乱码日产精品bd在线下载 | 天天做av天天爱天天爽 | 99久精品视频 | 日本高清视频免费看 | 亚洲欧美在线视频免费 | 国产欧美日韩专区 | 国产片av国语在线观看手机版 | 亚洲性视频 | 粗暴91大变态调教 | 国产ww久久久久久久久久 | 91国偷自产一区二区开放时间 | 无码国产精品高清免费 | 亚洲少妇精品 | 国精产品源xzl仙踪林仙踪 | 免费看a毛片 | 久久久精品成人免费观看 | 成人无码av一区二区三区 | av资源网址 | 国产免费av网站 | 伊大人久久香线焦宗合一75大 | 久久tv中文字幕首页 | 亚洲性久久久影院 | 黑人巨茎大战白人美女 | 日韩v欧美v中文在线 | 国产成人综合亚洲 | 色天天天天 | 欧洲精品一卡2卡三卡4卡影视 | av大天堂 | 久久精品伊人久久精品伊人 | 国产亚洲欧美日韩在线观看一区 | 青青草原综合久久大伊人精品 | 日本亚洲欧美高清专区vr专区 | 四虎影院精品在线观看 | 中文字幕国产精品 | 欧美一区二区高清视频 | 亚洲国产精品无码一区二区三区 | 精品国产免费人成电影在线看 | 国产成人久久久精品二区三区 | 777米奇色8888狠狠俺去啦 | 人妻中文字幕乱人伦在线 | 国产成人无码精品一区不卡 | 91亚洲精品久久久久图片蜜桃 | 日本少妇的性生活 | 成人一区av | 日韩h在线 | jzzjzz日本丰满成熟少妇 | 日韩欧美精品在线 | 久久久久国产精品久久久久 | 男女无遮挡激情视频 | 无码任你躁久久久久久 | 在线激情网 | 亚洲丁香五月激情综合 | 国产自产21区 | 免费久久人人爽人人爽av | 丁香色欲久久久久久综合网 | 黄网大全在线观看 | 九色91av| 国产午夜福利100集发布 | 亚洲综合在线一区二区三区 | 国产放荡对白视频在线观看 | 国产区在线视频 | 免费无码成人av在线播 | 午夜激情爱爱 | 国产不卡免费视频 | 天天天天躁天天爱天天碰2018 | 色先锋玖玖av资源部 | 精品视频在线免费看 | 精品国产亚洲午夜精品av | 成年性午夜无码免费视频 | 西西人体大胆午夜视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 精品亚洲成av人在线观看 | 黄色网址av| 欧美大码bbw搡bbbb搡小说 | 又粗又大又黄又爽的免费视频 | 国产乡下妇女做爰 | jizz在线观看视频 | aⅴ一区二区三区无卡无码 青青久操 | 亚洲性无码av中文字幕 | 日本欧美国产在线 | 日韩黄色免费 | 日韩激情一区二区三区 | 亚洲精品tv久久久久久久久久 | 亚洲成色999久久网站 | 色偷偷噜噜噜亚洲男人的天堂 | 成年奭片免费观看视频天天看 | 暴力调教一区二区三区 | 国产深夜福利视频在线 | 长篇乱肉合集乱500小说日本 | 国产精品无码翘臀在线看 | 91宅男噜噜噜66在线观看 | 亚洲综合情 | 国产一级做a爱片在线看免 久久综合亚洲色hezyo国产 | 波多野结衣久久精品99e | 国产91久久久 | 国产日韩欧美一区二区在线观看 | 久久99热这里只有精品国产 | 精品国产一区二区在线 | 毛片在线免费观看网址 | 亚洲成人第一页 | 手机免费看av | 亚洲精品久久久久av无码 | 高清国产亚洲精品自在久久 | 亚洲综合色88综合天堂 | 国产男女猛烈无遮挡在线喷水 | 爱爱爱网 | 国产精品扒开腿做爽爽爽a片唱戏 | 在线国产91| 999精品嫩草久久久久久99 | 久草视频精品 | 四面虎影最新播放网址 | 亚洲情xo亚洲色xo无码 | 无码精品人妻一区二区三区av | 国产一区999| 久久不见久久见免费视频7 狠狠操天天干 | 99久热在线精品996热是什么 | 狠狠干2023| 毛片在线免费观看网址 | 免费在线观看黄色av | av日韩网址 | 国产欧美亚洲精品第二区软件 | 欧美黄一级 | 成人免费视频在线看 | 成人高清在线 | 免费人成网站在线观看不卡 | 永久免费看片在线观看 | 日本a一级片 | 久久人妻少妇偷人精品综合桃色 | 导航福利在线 | 国产性色av高清在线观看 | 内射无套在线观看高清完整免费 | 国产一级在线播放 | 久久久高清 | 夜鲁鲁鲁夜夜综合视频欧美 | 亚洲精品传媒 | 亚洲国产精品特色大片观看完整版 | 96精品国产| 99久久久无码国产精品试看 | 最新系列国产专区|亚洲国产 | 亚洲欧美日韩中文久久 | 99综合久久 | 亚洲永久精品www | 四虎最新在线永久免费 | 黑人大荫道bbwbbb高潮潮喷 | 国产精品爽爽久久久久久竹菊 | 成人无码精品一区二区三区亚洲区 | 亚洲永久网址在线观看 | 久久久亚洲精品一区二区三区浴池 | 欧美中文字幕第一页 | 成人免费午夜视频69影院 | 久久鬼色 | 国产日韩专区 | 国产成人久久久77777 | 91久久精品人人做人人爽综合 | ai换脸赵丽颖国产一区裸 | 日韩av片无码一区二区三区不卡 | av无码免费一区二区三区 | 玩弄中年熟妇正在播放 | 国产一级特黄视频 | 久久精品国产再热青青青 | 男女激情爽爽爽免费视频 | 国产高中女学生第一次 | 青娱乐99 | 亚欧洲精品 | 玖玖在线观看视频 | 人妻少妇无码专视频在线 | 一二三区在线视频 | 日本在线看片免费人成视频 | 亚洲日韩欧美一区二区三区 | 国产福利精品一区二区 | 日韩精品www | 国产一区二区三区视频 | 亚洲中文字幕无码人在线 | 欧美日韩精品久久 | 性高湖久久久久久久久 | 国产精品亲子乱子伦xxxx裸 | 国产男女在线 | 国产亚洲视频一区 | 亚洲精选久久 | 秋秋影视午夜福利高清 | 久久久精品国产免费观看一区二区 | 国产v日产∨综合v精品视频 | 国产在线第二页 | 亚洲成aⅴ人最新无码 | www一区二区 | 欧美一区自拍 | 呦咪精品少妇在线视频 | 国产l精品国产亚洲区久久 国产成人无码区免费内射一片色欲 | 国产日产欧产精品精品蜜芽 | 狠狠色综合网站久久久久久久高清 | 永久免费网站在线 | 欧美肥臀大屁股magnet | 亚洲成a人片在线www | 国内精品久久久久久影院8f | 亚洲精品一区二区三区香蕉 | 国产欧美一区二区三区四区 | 五月婷婷视频在线观看 | 中文字幕欧洲有码无码 | 日韩欧美高清一区 | 国产网曝在线观看视频 | 日韩一级免费视频 | 欧美男女爱爱 | 熟女人妻水多爽中文字幕 | 狠狠cao2020高清视频 | 欧美三级 欧美一级 | 麻豆国产成人av高清在线观看 | 18禁裸男晨勃露j毛网站 | 黄色一级片免费播放 | 亚洲综合在线视频 | 自拍三区 | 久久精品国产字幕高潮 | 国产99视频精品免费观看9 | 日韩精品手机在线 | 日本亚洲欧洲无免费码在线 | 久久久欧美国产精品人妻 | www.久久久久久久久久久 | 五月天久久久噜噜噜久久 | 精品无人区卡一卡二卡三乱码 | 超碰免费公开在线 | 国产免费脚交足视频在线观看 | 少妇被黑人到高潮喷出白浆 | 精品在线视频一区 | 久久996re热这里只有精品无码 | 欧美大片aaaaa免费观看 | 精品伊人久久久99热这里只 | 日日噜噜夜夜爽爽 | 国产77777| 精品日韩在线 | 欧美最顶级丰满的aⅴ艳星 日本人又黄又爽又大又色 亚洲成a×人片在线观看 | 狠狠色婷婷丁香综合久久韩国电影 | 日韩三级网址 | 欧美一区二区三区在线免费观看 | 国产aⅴ夜夜欢一区二区三区 | 一区在线播放 | www.天天操 | 国产丰满农村老妇女乱 | 一级做a爱片性色毛片 | 黄毛片在线观看 | 久久久久免费精品国产小说色大师 | 久久久精品视频免费看 | 国产午夜精品av一区二区麻豆 | 成人含羞草tv免费入口 | 久久亚洲综合国产精品99麻豆的功能介绍 | 亚洲欧美日韩国产国产a | 久久精品熟女亚州av麻豆 | 精品香蕉在线观看视频 | 亚洲曰韩欧美在线看片 | 四虎成人永久免费视频 | 狠狠操精品 | 玖玖在线资源 | 国产黄色大片网站 | 亚洲aⅴ一区二区三区 | 欧美日韩色综合 | 老熟妇高潮喷了╳╳╳ | 男生操女生逼网站 | 亚洲理论在线a中文字幕 | 艳妇臀荡乳欲伦69调教在线播放 | 欧美 国产 小说 另类 | 亚洲第一免费视频 | 国产精品免费_区二区三区观看 | 久久亚洲中文字幕不卡一二区 | 国产午夜鲁丝片av无码 | 日p免费视频 | 伊人嫩草久久欧美站 | 狠狠躁夜夜躁av网站中文字幕 | 五月婷婷色丁香 | 手机看片福利永久 | 韩日av片 | 欧美黑人粗暴多交高潮水最多 | 国产做爰全免费的视频 | 国产精品麻豆免费版 | 日日色视频 | 蝌蚪自拍网 | 亚洲精品网站在线观看你懂的 | 内谢少妇xxxxx8老少交 | 婷婷黄色网 | 国产精品欧美亚洲 | 欧美三日本三级少妇三2023 | 亚洲欧美国产一区二区三区 | 台湾一级特黄aa大片免费看 | 久久久久久中文字幕有精品 | 欧美精品免费观看二区 | 国产精品午夜无码av体验区 | 亚洲欧洲日产国码无码动漫 | 国产精在线 | а√天堂资源在线 | jjzzjjzz欧美69巨大 | 亚洲精品久久一区二区三区四区 | 熟妇人妻无码中文字幕老熟妇 | xxx国产在线观看 | 亚洲aⅴ在线 | 欧美熟妇性xxxx交潮喷 | 欧美波霸在线 | 色天天综合 | 亚洲精品无码鲁网中文电影 | 九九九九热 | 99在线精品国自产拍 | 日韩视频在线一区二区 | 成人小视频在线观看免费 | 浓毛老太交欧美老妇热爱乱 | 成人午夜激情 | 在线看黄色网 | 999国内精品永久免费视频 | 精品国产成人国产在线观看 | 亚洲浮力影院久久久久久 | 成人在线手机视频 | 伊人福利 | 五月婷婷丁香综合 | 亚洲欧洲无码av不卡在线 | 男人天堂网站在线观看 | 精品人人妻人人澡人人爽人人 | 中文字幕在线播放不卡 | 婷婷丁香色 | 中文午夜人妻无码看片 | 制服丝袜人妻日韩在线 | 日韩在线视频不卡 | 亚洲男人天堂网址 | aaaa毛片| 欧美蜜桃网 | 成人精品亚洲人成在线 | 欧美韩日国产 | 亚洲在av极品无码 | 波多野吉衣av无码 | 91大片成人网 | 插美女亚洲视频播放欧美 | 在线观看国产一区二区三区 | 日本高清视频色wwwwww色 | 99免费观看 | 国产成人综合怡春院精品 | 日本美女福利视频 | 国产精品777| 精品国产三级a在线观看 | 99久久精品美女高潮喷水 | 国产精品视频全国免费观看 | 7777久久久国产精品消防器材 | 中文字幕日韩av在线 | 欧美日韩高清在线观看 | 国产中文字幕在线免费观看 | 少妇一夜三次一区二区 | 欧美专区另类专区在线视频 | 美女少妇翘臀啪啪呻吟网站 | 亚洲欧美网站 | 少妇啊灬啊别停灬用力啊免费视频 | 91国偷自产一区二区开放时间 | 手机av在线网 | 国产又色又爽又黄的在线观看视频 | 国产精品丝袜亚洲熟女 | 色大师在线观看视频 | 九九热在线播放 | 亚洲精品网站在线观看 | 少妇扣逼视频 | 亚洲久久色 | 国产av国片精品jk制服 | 东北女人啪啪对白 | 精品毛片一区二区 | 国产美女www爽爽爽免费视频 | 国产日韩精品欧美一区喷水 | 国产精品伦一区二区三区在线观看 | 欧美高清免费 | 国产一区二区91 | 无码人妻丝袜在线视频红杏 | 久久亚洲精品国产精品777777 | 久久aⅴ无码av高潮av喷吹 | 久久综合亚洲鲁鲁五月久久 | 亚洲精品无码永久中文字幕 | 少妇又粗又猛又爽又黄的视频 | 亚洲在线免费视频 | 国产精品久久久久久久白丝制服 | 亚洲天天影院色香欲综合 | 久久性色欲av免费精品观看 | 亚洲人成网站18禁止中文字幕 | 午夜理伦三级理论 | 国产一区二区三区色淫影院 | 成人中文字幕在线 | 天堂中文在线www天堂在线 | 久久精品屋 | 一区二区欧美在线 | 亚洲欧美综合中文 | 色噜噜狠狠一区 | 亚洲视屏在线 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久色91| 免费做a爰片久久毛片a片 | 天天摸夜夜添夜夜无码 | 青青草在线播放 | 国产三级精品三级在线专区1 | 国产又黄又潮娇喘视频在线观看 | 久久撸视频 | 亚洲午夜成人精品无码app | 欧美三级又粗又硬 | 欧美性xxxxx极品少妇 | 性激情网站 | 天天爱夜夜操 | 黄毛片在线观看 | 久久久久女教师免费一区 | 久久久久久国产精品无码超碰动画 | 一级猛片免费看 | 亚洲色图另类图片 | 久久中文字幕在线 | 精品国产一区二区三区久久 | 国产亚洲综合网曝门系列 | 人妻聚色窝窝人体www一区 | 丰满诱人的少妇3伦理 | 97视频免费| 国产精品100| 日本青青草 | 男人午夜天堂 | 亚洲国产精品一区二区制服 | 无码h黄动漫在线播放网站 人妻av中文字幕无码专区 | 日本黄色视| 亚州毛片 | 青青青爽视频在线观看 | 亚洲国产精品成人久久蜜臀 | 黄网站成人片免费视频 | 久草视频一区二区 | 少妇下面好紧好多水真爽播放 | ⅹxxxx69中国大学生hd | 日韩在线精品成人av | 国产无遮挡又黄又大又不要vip | 成人自慰女黄网站免费大全 | 少妇高潮喷潮久久久影院 | 美妇av| 怡红院av亚洲一区二区三区h | 夜鲁很鲁在线视频 | 天堂а√在线地址8中文种子 | 外国av网站 | 色av性av丰满av国产 | 99国产精品久久99久久久 | 欧美人与动牲交xxxxbbbb | 国产黄色一级大片 | 在线免费观看中文字幕 | 狠狠色狠狠色综合系列 | 秋霞99 | 茄子在线看片免费人成视频 | 天堂а√在线中文在线 | 中文日产幕无线码6区收藏 茄子成人看a∨片免费软件 | 久久人人爽人人爽人人 | 中文字幕在线观看视频免费 | 人人干人人爱 | 亚洲欧美黑人深喉猛交群 | 六月激情综合网 | 欧洲性生活片 | 视频在线二区 | 亚洲乱码日产精品bd在线下载 | 日韩在线成人 | 一级aaa毛片 | 精品国产不卡在线观看免费 | 国产精品人妻久久毛片 | 97国产精品久久久 | 日本一区二区在线播放 | 久久久人体 | 国产一区视频免费观看 | 精品久久久久久久久午夜福利 | 少妇被爽到高潮喷水久久欧美精品 | 精品无码国产污污污免费 | 四虎永久在线精品国产免费 | 国产农村妇女野外牲交视频 | 色视频免费看 | 国产电影无码午夜在线播放 | 日本50岁丰满熟妇xxxx | 日日操操 | 国产伦人人人人人人性 | 欧美mv日韩mv国产mv网站 | 久久夜色精品国产欧美一区麻豆 | 69精品人人 | 玩弄japan白嫩少妇hd小说 | av在线小说 | 欧美黑人粗暴多交高潮水最多 | 国产av国片精品一区二区 | 又色又爽又黄无遮挡的免费观看 | 亚洲欧美国产国产综合一区 | 国产精品99久久久久的智能播放 | 激情小说qvod| 一区二区视频免费观看 | 日日躁夜夜躁白天躁晚上躁91 | 国模小黎自慰gogo人体 | 内射小寡妇无码 | 欧洲午夜精品久久久久久 | 四虎官网 | 中文无码伦av中文字幕 | 欧美日韩国产欧美 | 黄瓜污视频在线观看 | 亚洲天砖砖区免费 | 亚洲综合国产在不卡在线 | 久久久久人妻精品一区二区三区 | 女人和拘做受全程看视频 | 福利网址在线观看 | 伊人精品综合 | 国产成人精品91 | 蜜臀av免费一区二区三区久久乐 | 免费观看av网址 | 18禁黄网站禁片免费观看女女 | 国产成人天天5g影院在线观看 | 国产成人三级在线观看视频 | 成人在线天堂 | 国产乱码精品一区二区三区不卡 | 欧美专区一区二区三区 | 午夜一二三 | 欧美日韩亚洲一区二区三区 | 久久婷婷人人澡人人爽人人爱 | 日韩人妻无码中文字幕视频 | 激情小说亚洲图片 | 亚洲精品黑牛一区二区三区 | avtt在线观看 | 夜夜夜夜曰天天天天拍国产 | 午夜高潮 | 99精品欧美一区二区三区 | 日韩视频无码免费一区=区三区 | 欧美人体做爰大胆视频 | 日本xxxx丰满老妇 | 国产成人亚洲人欧洲 | 国产人妻精品久久久久野外 | 成年女人免费v片 | 中文精品久久久久人妻不卡 | 99国产精品无码 | 色欲香天天天综合网站 | 丰满少妇69激情啪啪无 | 亚洲欧美日韩精品 | 鲁一鲁一鲁一鲁一av卡三 | 永久免费看av | 欧美人与动牲交xxxxbbbb | 在线观看免费播放av片 | 无码专区—va亚洲v专区 | 狠狠躁夜夜躁人蜜臀av小说 | 日韩av高清在线看片 | 免费看无码自慰一区二区 | 久久天天躁狠狠躁夜夜2020老熟妇 | 亚洲国产精品入口 | 无套内谢老熟女 | 日日夜夜躁| 午夜在线观看免费线无码视频 | 国产精品自在自线视频 | 在线观看日本高清二区 | 亚洲一区二区三区黄色 | 超碰网址| 欧洲吸奶大片在线看 | 亚洲精品国自产拍在线观看 | 久一在线 | 天天精品免费视频 | www.色天使| 国产精品永久在线观看 | 美女mm131午夜福利在线 | 精品国产福利一区二区三区 | 欧美不卡在线视频 | 特大巨黑吊xxxx高潮 | 人人看超碰 | 日韩成人在线免费视频 | 真实国产乱子伦精品一区二区三区 | 超碰在线视屏 | 欧美成人三级 | 亚洲精品久久久久久 | 四虎永久在线精品国产馆v视影院 | 久久99国产精品久久99 | 国产高清欧美 | 精品国内自产拍在线观看视频 | 欧美成人高清视频 | 日本护士毛茸茸xx | 亚洲欧美成人久久综合中文网 | 国产成人亚洲精品无码车a 亚洲日本欧美日韩高观看 五月综合在线观看 | 91桃色成人wangxhab| 亚洲熟女乱综合一区二区在线 | 欧美在线性视频 | 久久国产精品99精品国产987 | 少妇18| 国产精品久久人人做人人爽 | 色姑娘啪啪 | 亚洲乱亚洲乱妇 | 免费av网页 | 中文有码第一页 | 久久影视一区二区 | 欧美疯狂xxxxbbbb喷潮 | 中文字幕488页在线 色玖玖在线 | 九九九精品成人免费视频 | 精品亚洲视频在线观看 | 高清乱码在线 | 国精产品久久 | 草草久 | 亚洲精品国产熟女久久久 | 欧美三日本三级三级在线播放 | 亚洲精品久久国产精品 | 五月天国产精品 | 精品成人无码中文字幕不卡 | 人人爽日日躁夜夜躁尤物 | 欧美久久免费 | 日韩动态视频 | 亚洲九九九九 | 美女天天干 | 日韩亚洲欧美一区 | 日韩av成人免费看 | 亚洲国产精品一区第二页 | 天天综合网天天综合 | 成人无码视频在线观看网站 | 国产亚洲精品第一综合不卡 | 亚洲日韩欧美在线成人 | 国产乱来| 男人你懂的 | 亚洲欧美一区二区三区情侣bbw | 国产精品乱码一区 | 日日躁狠狠躁 | 国产女人的高潮大叫毛片 | 欧洲精品一卡2卡三卡4卡影视 | 欧美成人性生活片 | 久久久久国产精品人妻aⅴ天堂 | 新91视频网 | 日韩福利精品 | 天堂中文字幕在线 | 精品精品久久 | 日韩一级网站 | 免费的美女色视频网站 | 国产成人夜色在线影院 | 一区二区国产高清视频在线 | 看av免费毛片手机播放 | 国产拍揄自揄免费观看 | 中日av乱码一区二区三区乱码 | 久久美女av | 国产中文字幕91 | 亚洲中文字幕久久精品无码喷水 | 青青国产揄拍视频 | 中文字幕亚洲乱码熟女在线 | 韩国日本美国免费毛片 | 毛片手机在线观看 | 国产亚洲精品久久久久久无亚洲 | 色琪琪丁香婷婷综合久久 | 亚洲美女综合网 | 亚洲男女羞羞无遮挡久久丫 | 免费xxxxx大片在线观看网站 | 成人免费看黄网站yyy456 | 女女综合网 | 亚洲欧洲日产无码中文字幕 | xxxxxhd日本xxxx47| 天堂乱码一二三区 | 久久久久久久久久久免费精品 | 三上悠亚福利一区二区 | 欧美人牲交免费观看 | 亚洲最大在线视频 | 自拍偷区亚洲网友综合图片 | 久久全国免费视频 | 激情毛片无码专区 | 永久免费看啪啪网址入口 | 久久久久极品 | 日韩新无码精品毛片 | 国产婷婷一区二区三区久久 | 久草视频福利在线 | 日韩精品第1页 | 久久精品大片 | 久久羞羞视频 | 免费国产a国产片高清网站 午夜精品成人一区二区视频 | 国产无遮挡无码视频在线观看 | 久久9久久| 日日干狠狠操 | 狠狠噜天天噜日日噜视频麻豆 | 国产又粗又硬又大爽 | 日日射视频 | 国精产品一区一区三区免费视频 | 成人黄色一级视频 | 亚洲精品噜噜丝袜区精品 | 亚洲精品入口a级 | 色就是色综合 | 亚洲男人的天堂www 乱子轮熟睡1区 | 毛片内射 | 成人18毛片 | 国产精品免费看片 | 国产又粗又猛又大爽又黄老大爷视频 | 国产亚洲精aa在线观看see | a在线观看免费 | 中文字字幕在线中文无码 | 高清国产在线拍揄自揄视频 | 亚洲欧美综合区丁香五月小说 | 四虎国产精亚洲一区久久特色 | 在线a亚洲视频播放在线观看 | 日韩中文人妻无码不卡 | 亚洲国产成人无码av在线 | 四虎成人永久免费视频 | 一区二区久久 | 色综合天天色综合久久网 | 激情欧美在线观看 | 日本四虎影院 | 一级免费观看视频 | 福利视频在线播放 | 亚洲影视综合网 | av一二| 欧美性色大片在线观看 | 熟女俱乐部五十路二区av | 艳女av | 亚洲人成毛片在线播放 | 久久九九av免费精品 | 炕上如狼似虎的呻吟声 | 欧美一级片网址 | 久久久久久午夜成人影院 | 青青草国产成人av片免费 | 国产大学生av | 国产人成午夜免电影费观看 | 超碰69 | 欧美日韩一区二区三区在线观看视频 | 国产jjizz一区二区三区老人 | 国产白嫩初高生在线播放视频 | 伊人亚洲| 两性激情视频 | 91av国产精品 | 51真实女性私密spa按摩偷拍 | 99久久国产露脸精品竹菊传媒 | 高潮毛片无遮挡高清免费 | 欧美成人高清视频 | 狠狠久久五月精品中文字幕 | a级在线视频 | αss裸体日本少妇pics | 亚洲一区二区三区观看 | 13女裸体慰在线观看 | 一本久久伊人热热精品中文字幕 | 国产色影院 | 人妻av中文系列 | 日本美女毛片 | 欧美熟妇xxxxx欧美老妇不卡 | 99久久国产露脸精品 | 在线观看中文字幕dvd播放 | 亚洲 激情 在线 | 天堂av2014| 91视频成人免费 | www.91自拍| 在线天堂www天堂资源在线 | www.99av.com| 欧美性大战久久久久久 | 91私密视频| 亚洲国产精品va在线看黑人动漫 | 亚洲成人av一区二区三区 | 亚洲中文字幕va福利 | 少妇被黑人到高潮喷出白浆 | 色综合热无码热国产 | 久久亚洲色www成人 青青在线播放 | 日本日本乱码伦视频在线观看 | 亚洲欧美一区二区三区视频 | 性色av闺蜜一区二区三区 | 亚洲精品久久久久久久久毛片直播 | 中国女人内谢69xxxx免费视频 | 狠狠综合久久av一区二区小说 | 欧美亚洲不卡 | 日韩精品久久久久久久的张开腿让 | 成人免费无码大片a毛片抽搐色欲 | 国内黄色毛片 | 国产午夜片无码区在线观看爱情网 | 亚洲香蕉在线观看 | 18禁成年无码免费网站 | 宅男噜噜99国产精品麻豆精品 | 亚洲国产精品久久久久久久久久 | 咪咪色在线视频 | 97一区二区国产好的精华液 | 精品少妇人妻av一区二区三区 | 日本喷奶水中文字幕视频 | 亚洲成在人线在线播放 | 亚洲国产成人av网站 | 国产精品高潮在线 | 美女张开腿黄网站免费下载 | 999国产精品视频 | 天天躁恨躁夜躁2020优势对比 | 抱起大胸美女扔在床吻胸 | 免费三级大片 | 99ri国产精品 | 人人妻人人澡人人爽国产一区 | 午夜影皖精品av在线播放 | 欧美黑人又粗又大又爽免费 | 欧美国产一区二区三区激情 | 精品无码国产污污污免费网站国产 | 三级做爰高清视频 | 日韩bbw | 久99久热只有精品国产女同 | 国产乱人伦精品免费 | 亚洲精品无码永久电影在线 | 军人全身脱精光自慰 | a级黄色毛片三个搞一 | 天天做天天爽 | 黄视频免费在线看 | 少妇丰满大乳被男人揉捏视频 | 免费无码又爽又刺激毛片 | 国产精品免费看久久久无码 | 国产精品偷窥久久久盗摄 | 人妻少妇精品视中文字幕国语 | 激情内射人妻1区2区3区 | 北条麻妃在线一区二区韩世雅 | 一对一色视频聊天a | 国产极品粉嫩福利姬萌白酱 | 亚洲成av人片在 | 欧美福利视频一区 | 亚洲色一区二区三区四区 | 一级一级特黄女人精品毛片 | 国产亚洲精品久久久久久老妇 | av不卡一区二区 | 波霸ol色综合久久 | 日韩国产精品无码一区二区三区 | 一区二区三区午夜无码视频 | 丰满的少妇xxxxx人伦理 | 色网站在线观看 | 国产夜色精品一区二区av | 精品久久人人 | 欧美精品一二三 | 婷婷伊人五月 | 香蕉av在线播放 | 丁香婷婷久久 | 四虎亚洲国产成人久久精品 | 国产精品人成在线播放新网站 | 国产精品国产三级国产专i 国产精品午夜剧场免费观看 | 内射人妻视频国内 | 国产一级片免费看 | 国产日韩一区二区三区免费高清 | 亚洲成a人片77777在线播放 | 国产福利在线导航 | 欧美bbbb内谢 | 亚洲欧洲综合网 | 国产成人精品免费视频大全软件 | 超碰xx | 亚洲欧洲自拍拍偷午夜色 | 亚洲日韩va在线视频 | 在线播放偷拍一区精品 | 成人免费无码h在线观看不卡 | 欧美日韩少妇精品 | 一本大道久久精品懂色aⅴ 在线视频18在线视频4k | 亚洲精品中文在线观看 | 把腿张开老子臊烂你多p视频 | 国产精彩视频一区 | 一区二区三区在线 | 欧洲 | 久久久久久久岛国免费网站 | 国产亚洲日本精品无码 | 精产一二三产区m553 | 国产精品亚洲欧美大片在线观看 | 一区二区三区黄色片 | 国产精品美女久久久久网站浪潮 | 亚洲精品中文字幕乱码 | 黄色日批视频在线观看 | 日韩av男人天堂 | 久草播放| 国产精品一线天粉嫩av | 亚洲熟妇av一区二区三区下载 | 加勒比中文无码久久综合色 | 日韩av一国产av一中文字慕 | 亚洲成av人不卡无码影片 | 偷窥 亚洲 色 国产 日韩 | 国内自拍青青草 | 亚洲成在人线在线播放无码 | 一个综合色 | 久久九九久精品国产综合 | 国模二区 | 99视频在线免费播放 | 亚洲色18禁成人网站www | 一区二区视屏 | 久久久久99| 日日拍夜夜嗷嗷叫|日日摸 中文在线字幕观看 | 国产精品久免费的黄网站 | 亚洲欧美婷婷六月色综合 | 久久久亚洲精品视频 | 色妺妺在线视频 | 国产成 人 综合 亚洲奶水 | 在线天堂中文官网 | 国内午夜国产精品小视频 | 精品午夜久久福利大片 | 久久天天躁狠狠躁夜夜不卡 | 三级带三级的三级的三级的三 | 狠狠色丁香九九婷婷综合 | 野外被强j到高潮免费观看 久草在线免费资源站 | 国产福利一区二区三区在线视频 | 亚洲精品乱码久久久久66 | 九九热思思 | 高清一区二区三区免费视频 | 手机av中文字幕 | 亚洲另类av | 99热国产这里只有精品9 | 欧美日韩久久婷婷 | 天天色综合合 | 亚洲人成伊人成综合网小说 | 亚洲国产日韩在线 | 亚洲色欲色欲www在线看小说 | 蜜色欲多人av久久无码 | 自拍日韩亚洲一区在线 | av色影院 | 性做爰高清视频在线观看视频 | 日本一高清二区视频久二区 | 72式性无遮挡免费视频隐私的 | 女人夜夜春高潮爽a∨片传媒 | 曰本无码超乳爆乳中文字幕 | 啪啪福利社 | 思思久久96热在精品国产, | 亚洲中文字幕无码乱线久久视 | 国产高清视频色拍 | 91国内视频 | 中文字幕黑人 | 亚洲亚洲熟妇色l图片20p | 污网站在线观看免费 | 久热这里只有精品99国产6 | 5060国产午夜无码专区 | 无人在线观看免费高清视频 | jizz18女人高潮 | 亚日韩欧美 | 小辣椒av福利在线网站 | 亚洲高清av在线 | 人人爽人人爽人人片a | 一二三四视频社区在线 | 被公侵犯中文字幕在线观看 | 日韩人妻熟女毛片在线看 | 黄色日本免费 | 久97蜜芽久热 | 无码人妻精品一区二区三区在线 | 国产做a爱免费视频在线观看 | 黄网站视频在线观看 | 日日躁夜躁aaaaxxxx | 丁香婷婷综合网 | 日本天堂在线观看 | 日本少妇翘臀啪啪无遮挡软件 | 欧美天堂在线视频 | 久久久国产99久久国产久麻豆 | 怡春院久久国语视频免费 | 一区二区三区四区在线 | 超碰国产在线观看 | 好男人好资源在线观看免费视频 | 国产成人精品日本亚洲专区61 | 亚洲国产欧美日韩在线人成 | 久久综合色网 | 亚洲成色777777女色窝 | 国语自产精品视频在 视频 久久综合日本 | 国产精品自在拍首页视频8 亚洲一区二区三区尿失禁 中文在线а√天堂官网 | 国产亚洲精品久久久久久老妇 | 久久久橹橹橹久久久久高清 |