"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "drbd/drbd-kernel-compat/cocci_cache/6df003c107ea3810b7e4908048cec646/compat.patch" between
drbd-9.1.10.tar.gz and drbd-9.1.11.tar.gz

About: DRBD (9.x) is a block device which is designed to build high availability clusters. This is done by mirroring a whole block device via (a dedicated) network. You could see it as a "network RAID-1". The driver code got integrated into the vanilla Linux kernel.

compat.patch  (drbd-9.1.10):compat.patch  (drbd-9.1.11)
--- ./drbd_int.h --- ./drbd_int.h
+++ /tmp/cocci-output-398205-ba0866-drbd_int.h
@@ -1763,7 +1763,7 @@ extern sector_t drbd_get_max_capacity( @@ -1763,7 +1763,7 @@ extern sector_t drbd_get_max_capacity(
* we limit us to a platform agnostic constant here for now. * we limit us to a platform agnostic constant here for now.
* A followup commit may allow even bigger BIO sizes, * A followup commit may allow even bigger BIO sizes,
* once we thought that through. */ * once we thought that through. */
-#define DRBD_BIO_MAX_PAGES (BIO_MAX_VECS << PAGE_SHIFT) -#define DRBD_BIO_MAX_PAGES (BIO_MAX_VECS << PAGE_SHIFT)
+#define DRBD_BIO_MAX_PAGES (BIO_MAX_PAGES << PAGE_SHIFT) +#define DRBD_BIO_MAX_PAGES (BIO_MAX_PAGES << PAGE_SHIFT)
#if DRBD_MAX_BIO_SIZE > DRBD_BIO_MAX_PAGES #if DRBD_MAX_BIO_SIZE > DRBD_BIO_MAX_PAGES
#error Architecture not supported: DRBD_MAX_BIO_SIZE > (BIO_MAX_VECS << PAGE_SH IFT) #error Architecture not supported: DRBD_MAX_BIO_SIZE > (BIO_MAX_VECS << PAGE_SH IFT)
#endif #endif
@@ -1886,7 +1886,7 @@ extern void do_submit(struct work_struct @@ -1886,7 +1886,7 @@ extern void do_submit(struct work_struct
skipping to change at line 40 skipping to change at line 40
@@ -2104,7 +2104,7 @@ static inline void drbd_submit_bio_noacc @@ -2104,7 +2104,7 @@ static inline void drbd_submit_bio_noacc
bio->bi_status = BLK_STS_IOERR; bio->bi_status = BLK_STS_IOERR;
bio_endio(bio); bio_endio(bio);
} else { } else {
- submit_bio_noacct(bio); - submit_bio_noacct(bio);
+ generic_make_request(bio); + generic_make_request(bio);
} }
} }
--- drbd_transport_tcp.c --- drbd_transport_tcp.c
+++ /tmp/cocci-output-398205-71ae4f-drbd_transport_tcp.c
@@ -154,6 +154,26 @@ static struct drbd_path *__drbd_next_pat @@ -154,6 +154,26 @@ static struct drbd_path *__drbd_next_pat
return drbd_path; return drbd_path;
} }
+static void dtt_cork(struct socket *socket) +static void dtt_cork(struct socket *socket)
+{ +{
+ int val = 1; + int val = 1;
+ (void)kernel_setsockopt(socket, SOL_TCP, TCP_CORK, (char *)&val, + (void)kernel_setsockopt(socket, SOL_TCP, TCP_CORK, (char *)&val,
+ sizeof(val)); + sizeof(val));
+} +}
skipping to change at line 91 skipping to change at line 91
@@ -1258,7 +1278,7 @@ static bool dtt_hint(struct drbd_transpo @@ -1258,7 +1278,7 @@ static bool dtt_hint(struct drbd_transpo
set_bit(SOCK_NOSPACE, &socket->sk->sk_socket->flags); set_bit(SOCK_NOSPACE, &socket->sk->sk_socket->flags);
break; break;
case QUICKACK: case QUICKACK:
- tcp_sock_set_quickack(socket->sk, 2); - tcp_sock_set_quickack(socket->sk, 2);
+ dtt_quickack(socket); + dtt_quickack(socket);
break; break;
default: /* not implemented, but should not trigger error handling */ default: /* not implemented, but should not trigger error handling */
return true; return true;
--- drbd_state.c --- drbd_state.c
+++ /tmp/cocci-output-398205-cf5f61-drbd_state.c
@@ -147,7 +147,7 @@ static bool may_be_up_to_date(struct drb @@ -147,7 +147,7 @@ static bool may_be_up_to_date(struct drb
case D_DISKLESS: case D_DISKLESS:
if (!(peer_md->flags & MDF_PEER_DEVICE_SEEN)) if (!(peer_md->flags & MDF_PEER_DEVICE_SEEN))
continue; continue;
- fallthrough; - fallthrough;
+ ;/* fallthrough */ + ;/* fallthrough */
case D_ATTACHING: case D_ATTACHING:
case D_DETACHING: case D_DETACHING:
case D_FAILED: case D_FAILED:
--- drbd_sender.c --- drbd_sender.c
+++ /tmp/cocci-output-398205-b54c88-drbd_sender.c
@@ -23,7 +23,6 @@ @@ -23,7 +23,6 @@
#include <linux/random.h> #include <linux/random.h>
#include <linux/scatterlist.h> #include <linux/scatterlist.h>
#include <linux/overflow.h> #include <linux/overflow.h>
-#include <linux/part_stat.h> -#include <linux/part_stat.h>
#include "drbd_int.h" #include "drbd_int.h"
#include "drbd_protocol.h" #include "drbd_protocol.h"
@@ -2063,7 +2062,9 @@ void drbd_rs_controller_reset(struct drb @@ -2063,7 +2062,9 @@ void drbd_rs_controller_reset(struct drb
atomic_set(&peer_device->device->rs_sect_ev, 0); /* FIXME: ??? */ atomic_set(&peer_device->device->rs_sect_ev, 0); /* FIXME: ??? */
skipping to change at line 132 skipping to change at line 132
@@ -2777,7 +2778,7 @@ static void re_init_if_first_write(struc @@ -2777,7 +2778,7 @@ static void re_init_if_first_write(struc
connection->send.current_epoch_writes = 0; connection->send.current_epoch_writes = 0;
connection->send.last_sent_barrier_jif = jiffies; connection->send.last_sent_barrier_jif = jiffies;
connection->send.current_dagtag_sector = connection->send.current_dagtag_sector =
- connection->resource->dagtag_sector - ((BIO_MAX_VECS << P AGE_SHIFT) >> 9) - 1; - connection->resource->dagtag_sector - ((BIO_MAX_VECS << P AGE_SHIFT) >> 9) - 1;
+ connection->resource->dagtag_sector - ((BIO_MAX_PAGES << PAGE_SHIFT) >> 9) - 1; + connection->resource->dagtag_sector - ((BIO_MAX_PAGES << PAGE_SHIFT) >> 9) - 1;
} }
} }
--- drbd_req.c --- drbd_req.c
+++ /tmp/cocci-output-398205-3953be-drbd_req.c @@ -974,7 +974,7 @@ void __req_mod(struct drbd_request *req,
@@ -965,7 +965,7 @@ void __req_mod(struct drbd_request *req,
case READ_COMPLETED_WITH_ERROR: case READ_COMPLETED_WITH_ERROR:
drbd_set_all_out_of_sync(device, req->i.sector, req->i.size); drbd_set_all_out_of_sync(device, req->i.sector, req->i.size);
drbd_report_io_error(device, req); drbd_report_io_error(device, req);
- fallthrough; - fallthrough;
+ ;/* fallthrough */ + ;/* fallthrough */
case READ_AHEAD_COMPLETED_WITH_ERROR: case READ_AHEAD_COMPLETED_WITH_ERROR:
mod_rq_state(req, m, peer_device, RQ_LOCAL_PENDING, RQ_LOCAL_COMP LETED); mod_rq_state(req, m, peer_device, RQ_LOCAL_PENDING, RQ_LOCAL_COMP LETED);
break; break;
@@ -1267,7 +1267,7 @@ static bool remote_due_to_read_balancing @@ -1276,7 +1276,7 @@ static bool remote_due_to_read_balancing
switch (rbm) { switch (rbm) {
case RB_CONGESTED_REMOTE: case RB_CONGESTED_REMOTE:
return bdi_read_congested( return bdi_read_congested(
- device->ldev->backing_bdev->bd_disk->bdi); - device->ldev->backing_bdev->bd_disk->bdi);
+ device->ldev->backing_bdev->bd_disk->queue->backing_dev_i nfo); + device->ldev->backing_bdev->bd_disk->queue->backing_dev_i nfo);
case RB_LEAST_PENDING: case RB_LEAST_PENDING:
return atomic_read(&device->local_cnt) > return atomic_read(&device->local_cnt) >
atomic_read(&peer_device->ap_pending_cnt) + atomic_read(& peer_device->rs_pending_cnt); atomic_read(&peer_device->ap_pending_cnt) + atomic_read(& peer_device->rs_pending_cnt);
@@ -1644,7 +1644,7 @@ drbd_submit_req_private_bio(struct drbd_ @@ -1653,7 +1653,7 @@ drbd_submit_req_private_bio(struct drbd_
} else if (bio_op(bio) == REQ_OP_DISCARD) { } else if (bio_op(bio) == REQ_OP_DISCARD) {
drbd_process_discard_or_zeroes_req(req, EE_TRIM); drbd_process_discard_or_zeroes_req(req, EE_TRIM);
} else { } else {
- submit_bio_noacct(bio); - submit_bio_noacct(bio);
+ generic_make_request(bio); + generic_make_request(bio);
} }
put_ldev(device); put_ldev(device);
} else { } else {
@@ -2396,9 +2396,9 @@ static bool drbd_fail_request_early(stru @@ -2405,9 +2405,9 @@ static bool drbd_fail_request_early(stru
return false; return false;
} }
-void drbd_submit_bio(struct bio *bio) -void drbd_submit_bio(struct bio *bio)
+blk_qc_t drbd_make_request(struct request_queue *q, struct bio *bio) +blk_qc_t drbd_make_request(struct request_queue *q, struct bio *bio)
{ {
- struct drbd_device *device = bio->bi_bdev->bd_disk->private_data; - struct drbd_device *device = bio->bi_bdev->bd_disk->private_data;
+ struct drbd_device *device = bio->bi_disk->private_data; + struct drbd_device *device = bio->bi_disk->private_data;
#ifdef CONFIG_DRBD_TIMING_STATS #ifdef CONFIG_DRBD_TIMING_STATS
ktime_t start_kt; ktime_t start_kt;
#endif #endif
@@ -2407,15 +2407,15 @@ void drbd_submit_bio(struct bio *bio) @@ -2416,15 +2416,15 @@ void drbd_submit_bio(struct bio *bio)
if (drbd_fail_request_early(device, bio)) { if (drbd_fail_request_early(device, bio)) {
bio->bi_status = BLK_STS_IOERR; bio->bi_status = BLK_STS_IOERR;
bio_endio(bio); bio_endio(bio);
- return; - return;
+ return BLK_QC_T_NONE; + return BLK_QC_T_NONE;
} }
- blk_queue_split(&bio); - blk_queue_split(&bio);
+ blk_queue_split(bio->bi_disk->queue, &bio); + blk_queue_split(bio->bi_disk->queue, &bio);
if (device->cached_err_io) { if (device->cached_err_io) {
bio->bi_status = BLK_STS_IOERR; bio->bi_status = BLK_STS_IOERR;
bio_endio(bio); bio_endio(bio);
- return; - return;
+ return BLK_QC_T_NONE; + return BLK_QC_T_NONE;
} }
/* This is both an optimization: READ of size 0, nothing to do /* This is both an optimization: READ of size 0, nothing to do
@@ -2427,13 +2427,14 @@ void drbd_submit_bio(struct bio *bio) @@ -2436,13 +2436,14 @@ void drbd_submit_bio(struct bio *bio)
if (bio_op(bio) == REQ_OP_READ && bio->bi_iter.bi_size == 0) { if (bio_op(bio) == REQ_OP_READ && bio->bi_iter.bi_size == 0) {
WARN_ONCE(1, "size zero read from upper layers"); WARN_ONCE(1, "size zero read from upper layers");
bio_endio(bio); bio_endio(bio);
- return; - return;
+ return BLK_QC_T_NONE; + return BLK_QC_T_NONE;
} }
ktime_get_accounting(start_kt); ktime_get_accounting(start_kt);
start_jif = jiffies; start_jif = jiffies;
__drbd_make_request(device, bio, start_kt, start_jif); __drbd_make_request(device, bio, start_kt, start_jif);
+ return BLK_QC_T_NONE; + return BLK_QC_T_NONE;
} }
static unsigned long time_min_in_future(unsigned long now, static unsigned long time_min_in_future(unsigned long now,
@@ -2709,7 +2710,7 @@ void drbd_handle_io_error_(struct drbd_d @@ -2718,7 +2719,7 @@ void drbd_handle_io_error_(struct drbd_d
} }
break; break;
} }
- fallthrough; /* for DRBD_META_IO_ERROR or DRBD_FORCE_DETACH */ - fallthrough; /* for DRBD_META_IO_ERROR or DRBD_FORCE_DETACH */
+ ;/* fallthrough */ /* for DRBD_META_IO_ERROR or DRBD_FORCE_D ETACH */ + ;/* fallthrough */ /* for DRBD_META_IO_ERROR or DRBD_FORCE_D ETACH */
case EP_DETACH: case EP_DETACH:
case EP_CALL_HELPER: case EP_CALL_HELPER:
/* Force-detach is not really an IO error, but rather a /* Force-detach is not really an IO error, but rather a
--- drbd_receiver.c --- drbd_receiver.c
+++ /tmp/cocci-output-398205-3423fc-drbd_receiver.c
@@ -32,7 +32,6 @@ @@ -32,7 +32,6 @@
#include <linux/random.h> #include <linux/random.h>
#include <net/ipv6.h> #include <net/ipv6.h>
#include <linux/scatterlist.h> #include <linux/scatterlist.h>
-#include <linux/part_stat.h> -#include <linux/part_stat.h>
#include "drbd_int.h" #include "drbd_int.h"
#include "drbd_protocol.h" #include "drbd_protocol.h"
@@ -1294,8 +1293,7 @@ static void one_flush_endio(struct bio * @@ -1294,8 +1293,7 @@ static void one_flush_endio(struct bio *
skipping to change at line 359 skipping to change at line 359
@@ -9169,7 +9171,7 @@ static int got_NegRSDReply(struct drbd_c @@ -9169,7 +9171,7 @@ static int got_NegRSDReply(struct drbd_c
break; break;
case P_RS_CANCEL_AHEAD: case P_RS_CANCEL_AHEAD:
set_bit(SYNC_TARGET_TO_BEHIND, &peer_device->flags); set_bit(SYNC_TARGET_TO_BEHIND, &peer_device->flags);
- fallthrough; - fallthrough;
+ ;/* fallthrough */ + ;/* fallthrough */
case P_RS_CANCEL: case P_RS_CANCEL:
if (peer_device->repl_state[NOW] == L_VERIFY_S) { if (peer_device->repl_state[NOW] == L_VERIFY_S) {
drbd_verify_skipped_block(peer_device, sector, si ze); drbd_verify_skipped_block(peer_device, sector, si ze);
--- drbd_nl.c --- drbd_nl.c
+++ /tmp/cocci-output-398205-7113ca-drbd_nl.c
@@ -1495,7 +1495,8 @@ void drbd_set_my_capacity(struct drbd_de @@ -1495,7 +1495,8 @@ void drbd_set_my_capacity(struct drbd_de
{ {
char ppb[10]; char ppb[10];
- set_capacity_and_notify(device->vdisk, size); - set_capacity_and_notify(device->vdisk, size);
+ set_capacity(device->vdisk, size); + set_capacity(device->vdisk, size);
+ revalidate_disk_size(device->vdisk, false); + revalidate_disk_size(device->vdisk, false);
drbd_info(device, "size = %s (%llu KB)\n", drbd_info(device, "size = %s (%llu KB)\n",
ppsize(ppb, size>>1), (unsigned long long)size>>1); ppsize(ppb, size>>1), (unsigned long long)size>>1);
skipping to change at line 407 skipping to change at line 407
@@ -5513,7 +5514,7 @@ static void device_to_statistics(struct @@ -5513,7 +5514,7 @@ static void device_to_statistics(struct
s->dev_disk_flags = md->flags; s->dev_disk_flags = md->flags;
s->dev_lower_blocked = s->dev_lower_blocked =
- bdi_congested(device->ldev->backing_bdev->bd_disk->bdi, - bdi_congested(device->ldev->backing_bdev->bd_disk->bdi,
+ bdi_congested(device->ldev->backing_bdev->bd_disk->queue- >backing_dev_info, + bdi_congested(device->ldev->backing_bdev->bd_disk->queue- >backing_dev_info,
(1 << WB_async_congested) | (1 << WB_async_congested) |
(1 << WB_sync_congested)); (1 << WB_sync_congested));
put_ldev(device); put_ldev(device);
--- drbd_main.c --- drbd_main.c
+++ /tmp/cocci-output-398205-2d75ab-drbd_main.c
@@ -70,6 +70,7 @@ MODULE_PARM_DESC(minor_count, "Approxima @@ -70,6 +70,7 @@ MODULE_PARM_DESC(minor_count, "Approxima
MODULE_ALIAS_BLOCKDEV_MAJOR(DRBD_MAJOR); MODULE_ALIAS_BLOCKDEV_MAJOR(DRBD_MAJOR);
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
+#include <linux/vermagic.h> +#include <linux/vermagic.h>
#ifdef CONFIG_DRBD_FAULT_INJECTION #ifdef CONFIG_DRBD_FAULT_INJECTION
int drbd_enable_faults; int drbd_enable_faults;
@@ -149,7 +150,6 @@ struct bio_set drbd_io_bio_set; @@ -149,7 +150,6 @@ struct bio_set drbd_io_bio_set;
skipping to change at line 653 skipping to change at line 653
+ +
static int __init drbd_init(void) static int __init drbd_init(void)
{ {
int err; int err;
+ if (double_check_for_kabi_breakage()) + if (double_check_for_kabi_breakage())
+ return -EINVAL; + return -EINVAL;
initialize_kref_debugging(); initialize_kref_debugging();
--- drbd_debugfs.c --- drbd_debugfs.c
+++ /tmp/cocci-output-398205-a5373d-drbd_debugfs.c
@@ -1827,6 +1827,35 @@ static const struct file_operations drbd @@ -1827,6 +1827,35 @@ static const struct file_operations drbd
static int drbd_compat_show(struct seq_file *m, void *ignored) static int drbd_compat_show(struct seq_file *m, void *ignored)
{ {
+ seq_puts(m, "blk_queue_split__yes_has_two_parameters\n"); + seq_puts(m, "blk_queue_split__yes_has_two_parameters\n");
+ seq_puts(m, "bio_alloc__no_has_4_params\n"); + seq_puts(m, "bio_alloc__no_has_4_params\n");
+ seq_puts(m, "bio_bi_bdev__no_present\n"); + seq_puts(m, "bio_bi_bdev__no_present\n");
+ seq_puts(m, "blk_alloc_disk__no_present\n"); + seq_puts(m, "blk_alloc_disk__no_present\n");
+ seq_puts(m, "submit_bio__no_returns_void\n"); + seq_puts(m, "submit_bio__no_returns_void\n");
+ seq_puts(m, "submit_bio__no_present\n"); + seq_puts(m, "submit_bio__no_present\n");
skipping to change at line 691 skipping to change at line 691
+ seq_puts(m, "gendisk_part0__no_is_block_device\n"); + seq_puts(m, "gendisk_part0__no_is_block_device\n");
+ seq_puts(m, "bio_max_vecs__no_present\n"); + seq_puts(m, "bio_max_vecs__no_present\n");
+ seq_puts(m, "fs_dax_get_by_bdev__no_takes_start_off\n"); + seq_puts(m, "fs_dax_get_by_bdev__no_takes_start_off\n");
+ seq_puts(m, "add_disk__no_returns_int\n"); + seq_puts(m, "add_disk__no_returns_int\n");
+ seq_puts(m, "bdev_nr_sectors__no_present\n"); + seq_puts(m, "bdev_nr_sectors__no_present\n");
+ seq_puts(m, "genhd_fl_no_part__no_present\n"); + seq_puts(m, "genhd_fl_no_part__no_present\n");
return 0; return 0;
} }
--- drbd_dax_pmem.c --- drbd_dax_pmem.c
+++ /tmp/cocci-output-398205-2adc88-drbd_dax_pmem.c
@@ -58,9 +58,8 @@ int drbd_dax_open(struct drbd_backing_de @@ -58,9 +58,8 @@ int drbd_dax_open(struct drbd_backing_de
{ {
struct dax_device *dax_dev; struct dax_device *dax_dev;
int err; int err;
- u64 part_off; - u64 part_off;
- dax_dev = fs_dax_get_by_bdev(bdev->md_bdev, &part_off); - dax_dev = fs_dax_get_by_bdev(bdev->md_bdev, &part_off);
+ dax_dev = fs_dax_get_by_bdev(bdev->md_bdev); + dax_dev = fs_dax_get_by_bdev(bdev->md_bdev);
if (!dax_dev) if (!dax_dev)
return -ENODEV; return -ENODEV;
--- drbd_bitmap.c --- drbd_bitmap.c
+++ /tmp/cocci-output-398205-a0385b-drbd_bitmap.c
@@ -365,7 +365,8 @@ static struct page **bm_realloc_pages(st @@ -365,7 +365,8 @@ static struct page **bm_realloc_pages(st
new_pages = kzalloc(bytes, GFP_NOIO | __GFP_NOWARN); new_pages = kzalloc(bytes, GFP_NOIO | __GFP_NOWARN);
if (!new_pages) { if (!new_pages) {
new_pages = __vmalloc(bytes, new_pages = __vmalloc(bytes,
- GFP_NOIO | __GFP_HIGHMEM | __GFP_ZERO); - GFP_NOIO | __GFP_HIGHMEM | __GFP_ZERO);
+ GFP_NOIO | __GFP_HIGHMEM | __GFP_ZERO, + GFP_NOIO | __GFP_HIGHMEM | __GFP_ZERO,
+ PAGE_KERNEL); + PAGE_KERNEL);
if (!new_pages) if (!new_pages)
return NULL; return NULL;
} }
skipping to change at line 734 skipping to change at line 734
/* bio_add_page of a single page to an empty bio will always succeed, /* bio_add_page of a single page to an empty bio will always succeed,
* according to api. Do we want to assert that? */ * according to api. Do we want to assert that? */
bio_add_page(bio, page, len, 0); bio_add_page(bio, page, len, 0);
bio->bi_private = ctx; bio->bi_private = ctx;
bio->bi_end_io = drbd_bm_endio; bio->bi_end_io = drbd_bm_endio;
+ bio->bi_opf = op; + bio->bi_opf = op;
if (drbd_insert_fault(device, (op == REQ_OP_WRITE) ? DRBD_FAULT_MD_WR : D RBD_FAULT_MD_RD)) { if (drbd_insert_fault(device, (op == REQ_OP_WRITE) ? DRBD_FAULT_MD_WR : D RBD_FAULT_MD_RD)) {
bio->bi_status = BLK_STS_IOERR; bio->bi_status = BLK_STS_IOERR;
--- drbd_actlog.c --- drbd_actlog.c
+++ /tmp/cocci-output-398205-fc4481-drbd_actlog.c
@@ -94,14 +94,15 @@ static int _drbd_md_sync_page_io(struct @@ -94,14 +94,15 @@ static int _drbd_md_sync_page_io(struct
device->md_io.done = 0; device->md_io.done = 0;
device->md_io.error = -ENODEV; device->md_io.error = -ENODEV;
- bio = bio_alloc_bioset(bdev->md_bdev, 1, op | op_flags, - bio = bio_alloc_bioset(bdev->md_bdev, 1, op | op_flags,
- GFP_NOIO, &drbd_md_io_bio_set); - GFP_NOIO, &drbd_md_io_bio_set);
+ bio = bio_alloc_bioset(GFP_NOIO, 1, &drbd_md_io_bio_set); + bio = bio_alloc_bioset(GFP_NOIO, 1, &drbd_md_io_bio_set);
+ bio_set_dev(bio, bdev->md_bdev); + bio_set_dev(bio, bdev->md_bdev);
bio->bi_iter.bi_sector = sector; bio->bi_iter.bi_sector = sector;
err = -EIO; err = -EIO;
 End of changes. 18 change blocks. 
19 lines changed or deleted 7 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)