Size: a a a

2019 May 21

DL

Dmitry Luhtionov in freebsd_ru
Vyacheslav Olkhovchenkov
в async надо использовать
у нас даже был модуль ядра aio, но никто не знал, что он делает
источник

VO

Vyacheslav Olkhovchenkov in freebsd_ru
+void
+pmap_copy_pages(vm_page_t ma[], vm_offset_t a_offset, vm_page_t mb[],
+    vm_offset_t b_offset, int xfersize)
+{
+    struct sysmaps *sysmaps;
+    vm_page_t a_pg, b_pg;
+    char *a_cp, *b_cp;
+    vm_offset_t a_pg_offset, b_pg_offset;
+    int cnt;
+
+    sysmaps = &sysmaps_pcpu[PCPU_GET(cpuid)];
+    mtx_lock(&sysmaps->lock);
+    if (*sysmaps->CMAP1)
+        panic("pmap_copy_page: CMAP1 busy");
+    if (*sysmaps->CMAP2)
+        panic("pmap_copy_page: CMAP2 busy");
+    sched_pin();
+    while (xfersize > 0) {
+        invlpg((u_int)sysmaps->CADDR1);
+        invlpg((u_int)sysmaps->CADDR2);
+        a_pg = ma[a_offset >> PAGE_SHIFT];
+        a_pg_offset = a_offset & PAGE_MASK;
+        cnt = min(xfersize, PAGE_SIZE - a_pg_offset);
+        b_pg = mb[b_offset >> PAGE_SHIFT];
+        b_pg_offset = b_offset & PAGE_MASK;
+        cnt = min(cnt, PAGE_SIZE - b_pg_offset);
+        *sysmaps->CMAP1 = PG_V | VM_PAGE_TO_PHYS(a_pg) | PG_A |
+            pmap_cache_bits(b_pg->md.pat_mode, 0);
+        *sysmaps->CMAP2 = PG_V | PG_RW | VM_PAGE_TO_PHYS(b_pg) | PG_A |
+            PG_M | pmap_cache_bits(b_pg->md.pat_mode, 0);
+        a_cp = sysmaps->CADDR1 + a_pg_offset;
+        b_cp = sysmaps->CADDR2 + b_pg_offset;
+        bcopy(a_cp, b_cp, cnt);
+        *sysmaps->CMAP1 = 0;
+        *sysmaps->CMAP2 = 0;
+        a_offset += cnt;
+        b_offset += cnt;
+        xfersize -= cnt;
+    }
+    mtx_unlock(&sysmaps->lock);
+}
+
источник

LS

Lev Serebryakov in freebsd_ru
И md_malloc_move() — я вот смотрю и не понимаю, что там происходит
источник

M

MK in freebsd_ru
Немного вклинюсь в дискуссию. Как у нас сейчас модно (можно) делать сетевую репликацию master - master (!) на уровне устройств или файловой системы?
источник

LS

Lev Serebryakov in freebsd_ru
MK
Немного вклинюсь в дискуссию. Как у нас сейчас модно (можно) делать сетевую репликацию master - master (!) на уровне устройств или файловой системы?
Ээээ, никак?
источник

M

MK in freebsd_ru
Вот я чувствую что у меня в голове не складывается картинка... Но мож чего пропустил.
источник

LS

Lev Serebryakov in freebsd_ru
Я вообще не представляю себе, как можно сделать master-master на основе сырых блоков данных. Как конфликты-то решать будем, не зная, что там за данные?
источник

VO

Vyacheslav Olkhovchenkov in freebsd_ru
Still, the i386 cannot have much benefit from the unmapped buffers,
just because thre is no facilities similar to the direct map for amd64.
i386 must use transient mapping even for unmapped buffers to copy
the data to the usermode.
источник

M

MK in freebsd_ru
Мне единственное что приходит в голову это через iSCSI перекрёстно подключать девайсы и делать им mirror. "Но чё то я очкую" пробовать.
источник

DL

Dmitry Luhtionov in freebsd_ru
hastd ?
источник

M

MK in freebsd_ru
там же master - slave
источник

M

MK in freebsd_ru
только вроде бы
источник

DL

Dmitry Luhtionov in freebsd_ru
geom_multipath в режиме Active/Active
источник

M

MK in freebsd_ru
Dmitry Luhtionov
geom_multipath в режиме Active/Active
О, спасибо. Посмотрю.
источник

VO

Vyacheslav Olkhovchenkov in freebsd_ru
вообще непонятен смысл m-m для устройств. производительность это не поднимет, надежность в общем тоже
источник

M

MK in freebsd_ru
смысл HA
источник

DL

Dmitry Luhtionov in freebsd_ru
MK
О, спасибо. Посмотрю.
скинь свой физический адрес, у меня под столом циска MDS-9216 валяется
источник

DL

Dmitry Luhtionov in freebsd_ru
вышлю тебе
источник

M

MK in freebsd_ru
😃 на кой мне она?
источник

DL

Dmitry Luhtionov in freebsd_ru
MK
😃 на кой мне она?
это аппаратный SAN
источник